Re: bug in jdbc - Mailing list pgsql-jdbc
From | dmp |
---|---|
Subject | Re: bug in jdbc |
Date | |
Msg-id | 4E63AA4A.6010201@ttc-cmc.net Whole thread Raw |
In response to | Re: bug in jdbc (dmp <danap@ttc-cmc.net>) |
List | pgsql-jdbc |
dmp wrote: > luvar@plaintext.sk wrote: >> Hi, I have executed some update query and I have requested to return >> generated id... >> >> statement.executeUpdate(query, Statement.RETURN_GENERATED_KEYS); >> ResultSet ids = statement.getGeneratedKeys(); >> ids.next(); >> ids.getInt(1); >> >> It will fail with this exception: >> >> 19:03:50,300 WARN ObjectBrowser:254 - Bad value for type int : >> /home/luvar/output.svg >> org.postgresql.util.PSQLException: Bad value for type int : >> /home/luvar/output.svg >> at >> org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2759) >> >> at >> org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2003) >> >> ..... >> >> >> I am using maven. Used jdbc version: >> >> <dependency> >> <groupId>postgresql</groupId> >> <artifactId>postgresql</artifactId> >> <version>9.0-801.jdbc4</version> >> </dependency> >> >> I have table constructed in such way, that id (bigserial typed) column >> is NOT first column. It is second and first column of my table is >> "url" column to which I try insert "/home/luvar/output.svg" value. >> >> Can you have a look and confirm this bug to me, or there is no bug and >> something I am doing bad? >> > > I have confirmed the behavior you have indicated in a test case that > is not using Maven, but rather the JDBC directly. > > Though I have not reviewed the behavior of statement.executeUpdate(query, > Statement.RETURN_GENERATED_KEYS) thoroughly I suggest you try the > modifications that I made to your example code that helped me to understand > more fully what is happening. I can not address if this is a bug or not. > > sqlStatement.executeUpdate(sqlStatementString, > Statement.RETURN_GENERATED_KEYS); > resultSet = sqlStatement.getGeneratedKeys(); > tableMetaData = resultSet.getMetaData(); > while (resultSet.next()) > { > for (int i = 1; i < tableMetaData.getColumnCount() + 1; i++) > { > System.out.println(i + " " + tableMetaData.getColumnName(i)); > System.out.println(resultSet.getString(colNameString)); > } > } > > Output: > Connection Created > INSERT INTO "public"."key_table21" ("text","id") VALUES ('aaa',33) > 1 text > aaa > 2 id > 33 > Connection Closed > > danap. > Sorry I made a simplification of the example code in the email that obscured it. while (resultSet.next()) { for (int i = 1; i < tableMetaData.getColumnCount() + 1; i++) { String colNameString = tableMetaData.getColumnName(i); System.out.println(i + " " + colNameString); System.out.println(resultSet.getString(colNameString)); } } danap.
pgsql-jdbc by date: