我想知道如果ResultSet可以关闭,如果我没有关闭它?我有一个ResultSet是关闭的异常,但我确信我没有关闭ResultSet的任何地方。 我做完全是我用的ResultSet执行SELECT查询,然后我用同样的ResultSet,因为它是用这种方法叫: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的构造器中创建SQL语句:
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以后创建每当我想执行语句。
这些实际上是2个不同的操作..我使用一个连接,所以我使用一个语句和许多结果集。这是问题吗? – Ahmed 2011-02-13 12:43:30
@Ahmed如果您从上面粘贴的文档部分阅读了'Note',它说如果ResultSet被重新执行或者下一个结果被检索到,则ResultSet被关闭。所以,无论你采取什么方式,只有最后一个ResultSet是有效的,其他所有的都是关闭的。正如我所说,检索所有结果,将它们存储在某个地方,然后按照您的喜好阅读它们。 – mdrg 2011-02-13 12:55:12