Thread: problem to get nextval of a sequence
Hi List I try to get the 'nextval' of a sequence: *** String query = "SELECT nextval('nodes_nodeid_seq')"; pstmt = conn.prepareStatement(query); logger.debug("statement: " + pstmt.toString()); ResultSet ress = pstmt.executeQuery(); long newID = ress.getLong("nextval"); // <-- Exception *** I get the following Exception: *** org.postgresql.util.PSQLException: ResultSet not positioned properly, perhaps you need to call next. at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2380) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1821) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getFixedString(AbstractJdbc2ResultSet.java:2326) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:1935) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2158) at org.daniel.pws.store.PostgresStore.newNode(PostgresStore.java:307) at org.daniel.pws.store.StoreTester.main(StoreTester.java:71) 2004-12-28 13:41:57,983 - not able to get the new nodeID **** executing the query in PostgresSQL directly works, I get the correct return value. The Query itself seems to be executet, as I get other exceptions if I misspell the columnname (e.g.). I'm working with Postgres-jdbc: pg80b1-1.308.jdbc3.jar and JDK 1.5.0 someone an Idea? wishing all a Happy new Year Daniel
Attachment
Daniel, You have to call ress.next() before you get the value. Dave Daniel Schaedler wrote: > Hi List > > I try to get the 'nextval' of a sequence: > *** > String query = "SELECT nextval('nodes_nodeid_seq')"; > pstmt = conn.prepareStatement(query); > logger.debug("statement: " + pstmt.toString()); > ResultSet ress = pstmt.executeQuery(); > long newID = ress.getLong("nextval"); // <-- Exception > *** > > I get the following Exception: > *** > org.postgresql.util.PSQLException: ResultSet not positioned properly, > perhaps you need to call next. > at > org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2380) > > at > org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1821) > > at > org.postgresql.jdbc2.AbstractJdbc2ResultSet.getFixedString(AbstractJdbc2ResultSet.java:2326) > > at > org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:1935) > > at > org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2158) > > at org.daniel.pws.store.PostgresStore.newNode(PostgresStore.java:307) > at org.daniel.pws.store.StoreTester.main(StoreTester.java:71) > 2004-12-28 13:41:57,983 - not able to get the new nodeID > **** > > executing the query in PostgresSQL directly works, I get the correct > return value. > The Query itself seems to be executet, as I get other exceptions if I > misspell the columnname (e.g.). > I'm working with Postgres-jdbc: pg80b1-1.308.jdbc3.jar and JDK 1.5.0 > > someone an Idea? > > wishing all a Happy new Year > Daniel -- Dave Cramer http://www.postgresintl.com 519 939 0336 ICQ#14675561
Daniel Schaedler <postgres-jdbc 'at' daniel.schaedler.name> writes: > Hi List > > I try to get the 'nextval' of a sequence: > *** > String query = "SELECT nextval('nodes_nodeid_seq')"; > pstmt = conn.prepareStatement(query); > logger.debug("statement: " + pstmt.toString()); > ResultSet ress = pstmt.executeQuery(); > long newID = ress.getLong("nextval"); // <-- Exception > *** > > I get the following Exception: > *** > org.postgresql.util.PSQLException: ResultSet not positioned properly, > perhaps you need to call next. "perhaps you need to call next". Have you tried calling next? -- Guillaume Cottenceau
Guillaume Cottenceau wrote: > Daniel Schaedler <postgres-jdbc 'at' daniel.schaedler.name> writes: > > >>Hi List >> >>I try to get the 'nextval' of a sequence: >>*** >> String query = "SELECT nextval('nodes_nodeid_seq')"; >> pstmt = conn.prepareStatement(query); >> logger.debug("statement: " + pstmt.toString()); >> ResultSet ress = pstmt.executeQuery(); >> long newID = ress.getLong("nextval"); // <-- Exception >>*** >> >>I get the following Exception: >>*** >>org.postgresql.util.PSQLException: ResultSet not positioned properly, >>perhaps you need to call next. > > > "perhaps you need to call next". > > Have you tried calling next? uhhh.... ....now yes...and it works. When I expect only one set of data, I never call next. That's why I ignored the statement. thanks anyway. Daniel
Attachment
Daniel, The spec says that you must call next to position the cursor. What happens if nothing comes back? ie an empty result set ? Dave Daniel Schaedler wrote: > Guillaume Cottenceau wrote: > >> Daniel Schaedler <postgres-jdbc 'at' daniel.schaedler.name> writes: >> >> >>> Hi List >>> >>> I try to get the 'nextval' of a sequence: >>> *** >>> String query = "SELECT nextval('nodes_nodeid_seq')"; >>> pstmt = conn.prepareStatement(query); >>> logger.debug("statement: " + pstmt.toString()); >>> ResultSet ress = pstmt.executeQuery(); >>> long newID = ress.getLong("nextval"); // <-- Exception >>> *** >>> >>> I get the following Exception: >>> *** >>> org.postgresql.util.PSQLException: ResultSet not positioned properly, >>> perhaps you need to call next. >> >> >> >> "perhaps you need to call next". >> >> Have you tried calling next? > > > uhhh.... > ....now yes...and it works. > > When I expect only one set of data, I never call next. That's why I > ignored the statement. > > thanks anyway. > Daniel > > > -- Dave Cramer http://www.postgresintl.com 519 939 0336 ICQ#14675561
Dave Cramer <pg 'at' fastcrypt.com> writes: > Daniel, > > The spec says that you must call next to position the cursor. What > happens if nothing comes back? ie an empty result set ? With previous versions of postgres (and/or the jdbc driver?) it was possible to get results with the cursor positioned before the first row; it returned results from the first row. That's probably the reason of the buggy code of Daniel. -- Guillaume Cottenceau