Thread: "org.postgresql.util.PSQLException: This ResultSet is closed" in call to rst.getString(..)

The following code throws an Exception with the postgresql jdbc driver. This code does work with the MySQL and HSQL JDBC drivers and it looks correct to me. The call to getString(..) is what is causing the exception. It appears the result set is considered closed even though ResultSet.next() returns true in this case. Any help would be appreciated. Thanks.

Info:

Server Version = 8.0.3

JDBC Driver Version = 8.0 Build 312

Code that causes exception:

ResultSet rstVersionColumns=meta.getVersionColumns(null, null, tableName);

while (rstVersionColumns.next())

{

String fieldName=rstColumn.getString("COLUMN_NAME"); // Exception thrown here

if (_logger.isDebugEnabled())

_logger.debug("Version field "+fieldName);

// [snip]

}

Partial Stack Trace

Caused by: org.postgresql.util.PSQLException: This ResultSet is closed.

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2457)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.findColumn(AbstractJdbc2ResultSet.java:2358)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2203)

--

Russ Tennant

russ@i2rd.com

Attachment

Re: "org.postgresql.util.PSQLException: This ResultSet is

From
Oliver Jowett
Date:
Russ Tennant wrote:
> It appears the result set is considered closed even though
> ResultSet.next() returns true in this case.

Uh, you are calling getString on a different ResultSet to the one you
called next() on:

> ResultSet rstVersionColumns=meta.getVersionColumns(null, null, tableName);
>
> while (rstVersionColumns.next())
>
> {
>
> String fieldName=rstColumn.getString("COLUMN_NAME"); // Exception thrown
> here

-O

On Wednesday 05 October 2005 5:38 pm, you wrote:
> Russ Tennant wrote:
> > It appears the result set is considered closed even though
> > ResultSet.next() returns true in this case.
>
> Uh, you are calling getString on a different ResultSet to the one you
>
> called next() on:
> > ResultSet rstVersionColumns=meta.getVersionColumns(null, null,
> > tableName);
> >
> > while (rstVersionColumns.next())
> >
> > {
> >
> > String fieldName=rstColumn.getString("COLUMN_NAME"); // Exception
> > thrown here
>
> -O

Ahah! :) Sorry for the false alarm.

--
Russ Tennant
russ@i2rd.com

Attachment

Re: "org.postgresql.util.PSQLException: This ResultSet is

From
Dave Cramer
Date:
The more interesting thing is what do HSQL and MySql return here ;)

Dave
On 5-Oct-05, at 6:38 PM, Oliver Jowett wrote:

> Russ Tennant wrote:
>
>> It appears the result set is considered closed even though
>> ResultSet.next() returns true in this case.
>>
>
> Uh, you are calling getString on a different ResultSet to the one you
> called next() on:
>
>
>> ResultSet rstVersionColumns=meta.getVersionColumns(null, null,
>> tableName);
>>
>> while (rstVersionColumns.next())
>>
>> {
>>
>> String fieldName=rstColumn.getString("COLUMN_NAME"); // Exception
>> thrown
>> here
>>
>
> -O
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: explain analyze is your friend
>
>