Обсуждение: "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
Вложения
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
Вложения
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 > >