Обсуждение: problem to get nextval of a sequence

Поиск
Список
Период
Сортировка

problem to get nextval of a sequence

От
Daniel Schaedler
Дата:
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

Вложения

Re: problem to get nextval of a sequence

От
Dave Cramer
Дата:
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


Re: problem to get nextval of a sequence

От
Guillaume Cottenceau
Дата:
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

Re: problem to get nextval of a sequence

От
Daniel Schaedler
Дата:
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




Вложения

Re: problem to get nextval of a sequence

От
Dave Cramer
Дата:
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


Re: problem to get nextval of a sequence

От
Guillaume Cottenceau
Дата:
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