Re: bug with 8.X level 4 driver? - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: bug with 8.X level 4 driver?
Date
Msg-id 0E851503-1490-4B97-93E5-BA7EC64D96E3@fastcrypt.com
Whole thread Raw
In response to bug with 8.X level 4 driver?  (Damon Anderson <anderson@eclipse.knight-rider.org>)
Responses Re: bug with 8.X level 4 driver?
List pgsql-jdbc
Damon,

Try using batches instead. The new driver can no longer do multiple
statements that way.

Dave
On 6-Dec-05, at 1:40 AM, Damon Anderson wrote:

> Hello,
>
> I currently have a problem with the following statement:
>
>  ppS = dd.createPPStatement();
>  ppS.setQueryString(
>                   "INSERT INTO sandwich_side (name) VALUES
> ('pickles');" +
>                   "INSERT INTO sandwich ( name, sideid) VALUES
> ('club', currval('sandwich_side_id_seq'));" +
>                   "SELECT currval('sandwich_side_id_seq')");
>  Resultset rs = ppS.getPreparedStatement().executeQuery();
>  try {
>    while( rs.next()) {}
>  } catch { SQLException ex1) {
>    ex1.printStackTrace();
>  }
>
> (This use to work, but updated to 8.X driver (for a unicode issue))
> SQLMessage: No results were returned by the query.
> Statement: Pooled statement wrapping physical statement INSERT INTO
> sandwich_side (name) VALUES ('pickles');INSERT INTO sandwich
> ( name, sideid) VALUES('club', currval
> ('sandwich_side_id_seq'));SELECT currval('sandwich_side_id_seq')
> org.postgresql.util.PSQLException: No results were returned by the
> query.
>     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery
> (AbstractJdbc2Statement.java:241)
>
> ------------------
>
> So did some searching on the forums, lists, etc.. Changed it to this:
>  try
>  {
>     ppS = dd.createPPStatement();
>     ppS.setQueryString(
>                   "INSERT INTO sandwich_side (name) VALUES
> ('pickles');" +
>                   "INSERT INTO sandwich ( name, sideid) VALUES
> ('club', currval('sandwich_side_id_seq'));" +
>                   "SELECT currval('sandwich_side_id_seq')");
>     ppS.initStatement();  //Prepares the statement.
>     ppS.getPreparedStatement().execute();
>     if( ppS.getPreparedStatement().getMoreResults())
>       rs = ppS.getPreparedStatement().getResultSet();
>  }
>  catch (SQLException ex1)
>  {
>    ex1.printStackTrace();
>  }
>
>  //ResultSet rs = ppS.getGeneratedKeys();
>  try
>  {
>    while (rs.next()) <-----
>    {
>      System.err.println("getInt: " + rs.getInt(1));
>    }
>  }
>  catch (SQLException ex) {  ex.printStackTrace(); }
>
> So at the moment I can't get the serial id that was created for
> this new insert. The old way with just executeQuery worked great
> (must be 7.X driver). I tried several version of the 8.X driver,
> but all had the same results.
>
> Anyone have the same results? Doing something wrong?
>
> Thanks much,
>
> Damon
> P.S. This is with version 8.0 postgresql server.
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>


pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: JDBC executeUpdate returns 0 for table partitioning rule insertion
Next
From: Jan de Visser
Date:
Subject: Re: pgsql XA with weblogic 8.1?