bug with 8.X level 4 driver?

Поиск
Список
Период
Сортировка
От Damon Anderson
Тема bug with 8.X level 4 driver?
Дата
Msg-id Pine.LNX.4.64.0512060024150.2074@eclipse.knight-rider.org
обсуждение исходный текст
Ответы Re: bug with 8.X level 4 driver?  (Dave Cramer <pg@fastcrypt.com>)
Re: bug with 8.X level 4 driver?  (Kris Jurka <books@ejurka.com>)
Список pgsql-jdbc
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.

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Kris Jurka
Дата:
Сообщение: Re: Problem with 8.1 driver
Следующее
От: Joost Kraaijeveld
Дата:
Сообщение: Advise on mapping JTable to large PostgreSQL table requested?