我想知道如果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