【发布时间】:2011-02-13 12:05:25
【问题描述】:
我想知道如果我没有关闭 ResultSet 是否可以关闭?我有一个 ResultSet is closed 异常,但我确定我没有在任何地方关闭 ResultSet 。 我所做的是我使用 ResultSet 执行 SELECT 查询然后我使用相同的 ResultSet 因为它是由这个方法调用的:
public Object getValueAt( int row, int column )
throws IllegalStateException {
// ensure database connection is available
if ( !dbConnection.isConnectedToDatabase() )
throw new IllegalStateException( "Not Connected to Database" );
// obtain a value at specified ResultSet row and column
try {
getResultSet().absolute( row + 1 );
return getResultSet().getObject( column + 1 );
} // end try
catch ( SQLException sqlException ) {
System.out.println("Exception from here dude");
sqlException.printStackTrace();
} // end catch
return ""; // if problems, return empty string object
} // end method getValueAt
那么,另一个问题:有没有办法确保 ResultSet 被打开?
第三个问题:可能是因为我从不关闭 ResultSets 的问题。
关闭 ResultSet 有什么意义?
编辑:这就是在名为 DBConnection 的类的构造函数中创建语句的方式:
Class.forName(driver);
// connect to database
connection = DriverManager.getConnection(url, username, password);
// create Statement to query database
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY );
//connection ok
connectedToDatabase=true;
ResultSet 稍后在我想执行语句时创建。
【问题讨论】: