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]

Reply via email to