Ok - implemented the getGeneratedKeys() method and everything works great.
Thank you very much Mike! On another topic, is there any quick way to determine the total rows returned in a ResultSet without stepping through it. I want to build array's or objects and I need to know in advance what the array dimension will be. I could use lists, but I'd rather use array's. Here's what I came up with: ResultSet rs = ps.executeQuery(); rs.last(); int total = rs.getRow(); rs.beforeFirst(); When I get the resultset, I go to the last row, get its number, and then reset the resultset cursor back to before the first row. Is there already a method to give me this data? I looked but couldn't find any... Joe -----Original Message----- From: Mike Curwen [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 22, 2003 1:05 PM To: 'Tomcat Users List' Subject: RE: JDBC + MySQL Datasource + Tomcat = ClassCastException I'd drop the non-compliant way of getting this value, and use what's provided by JDBC 3.0 (available with JDK 1.4.x and ConnectorJ 3.x) statement.getGeneratedKeys() No casting required. http://www.mysql.com/articles/autoincrement-with-connectorj.html > -----Original Message----- > From: Joe Krause [mailto:[EMAIL PROTECTED] > Sent: Tuesday, July 22, 2003 2:49 PM > To: '[EMAIL PROTECTED]' > Subject: JDBC + MySQL Datasource + Tomcat = ClassCastException > > > Hi Folks, I am trying to recast the JDBC Statement object > that is given to me from a Connection object that I get out > of Tomcat's datasource connection pool. If I recast the > generic java.sql.Statement to a com.mysql.jdbc.Statment, I > can use the non JDBC compliant methods such as > getLastInsertID. When I do this in a test class using > standard JDBC, it works perfectly. But when I try to do this > from a connection object that is retrived from tomcat's > connection pool, I get a ClassCastException. Does the > datasource mechanism alter the connection somehow so that it > would no longer give me com.mysql.jdbc.Statment objects, but > some other kind? > > > > Here's the code that works... > > > > Class.forName("com.mysql.jdbc.Driver"); > > Connection con = > DriverManager.getConnection(:mysql://jedi.x:3306/vegas?autoRec > onnect=true, > username, password); > > > > Statement stmt = con.createStatement(); > > stmt.executeUpdate("INSERT INTO role VALUES > (null, 'test', '123')"); > > > > com.mysql.jdbc.Statement m = > (com.mysql.jdbc.Statement) stmt; > > long id = m.getLastInsertID(); > > > > Here's the code that doesn't work: > > > > Context ctx = new InitialContext(); > > DataSource ds = > (DataSource)ctx.lookup("java:comp/env/jdbc/vegas"); > > Connection con = ds.getConnection(); > > > > Statement stmt = con.createStatement(); > > stmt.executeUpdate("INSERT INTO role VALUES > (null, 'test', '123')"); > > > > com.mysql.jdbc.Statement m = > (com.mysql.jdbc.Statement) stmt; > > long id = m.getLastInsertID(); > > > > I should note that other than this, everything works fine > with the datasource. Its configured properly (I think) and I > can fully access the database in all respects. > > > > I am using: > > Tomcat 4.1.24 > > Linux 2.4.20 > > Mysql 4.0.13 > > Java 1.4.1.03 > > Mysql Connector/J 3.0.8 > > > > Thanks For the help! > > > > Joe Krause > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]