Re: bug in jdbc

From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: luvar(at)plaintext(dot)sk
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: bug in jdbc
Date: 2011-09-04 21:25:14
Message-ID: CA+0W9LMLmJ1T0NNcPireVxBwYQi7+QF0CZrqiROU4n1LDtTjMQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On 4 September 2011 05:16, <luvar(at)plaintext(dot)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)

Javadoc for getGeneratedKeys says:

Note:If the columns which represent the auto-generated keys were not
specified, the JDBC driver implementation will determine the columns
which best represent the auto-generated keys.

So you shouldn't expect a particular set of returned columns unless
you explicitly specify which columns to return. (In this particular
case the driver is playing it safe and returning *all* columns as it
doesn't know which ones could be affected by triggers etc)
You could look up the column you want by name rather than by index, or
use the overloaded variant of executeUpdate() that takes a list of
column names.

Oliver

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message luvar 2011-09-05 00:07:15 Re: bug in jdbc
Previous Message dmp 2011-09-04 16:41:46 Re: bug in jdbc