我看了很多答案,但不幸的是沒有回答我的問題,我仍然無法弄清楚爲什麼我得到ResultSet closed
。java.sql.SQLException:結果集關閉sqlite
這裏是try
代碼片段that`s導致了問題:
System.out.println(" System Info! @CHKMD5Files(): Found pre-existing details: "+TOTAL);
Statement stmMD5 = null;
Connection connMD5 = null;
ResultSet rs_MD5 = null;
String RESULTMD5 = null;
try {
connMD5 = DriverManager.getConnection("jdbc:sqlite:" + bkpPATH+ hostname + ".db");
stmMD5 = connMD5.createStatement();
connMD5.setAutoCommit(false);
while (ROWID <= TOTAL) {
rs_MD5 = stmMD5.executeQuery("SELECT md5 FROM details WHERE ROWID = '"+ROWID+"';");
RESULTMD5 = rs_MD5.getString("MD5");
skipBuffer.write(RESULTMD5);
skipBuffer.newLine();
skipBuffer.flush();
ROWID++;
}
System.out.println(" System Info! @CHKMD5Files(): Done with try");
} catch (Exception ex) {
System.out.println(" System Error! @CHKMD5Files (2): " + ex);
System.exit(5);
} finally {
if (stmMD5 != null){
stmMD5.close();
System.out.println(" System Info! @CHKMD5Files (2): Closing Statement(stmMD5)");
}
if (connMD5 != null) {
connMD5.close();
System.out.println(" System Info! @CHKMD5Files (2): Closing Connection(connMD5)");
}
skipBuffer.close();
}
}
貌似while循環甚至不運行,因爲如果我把打印語句在循環返回任何內容。
在什麼時候,你得到這個錯誤? –
你可以添加錯誤的堆棧跟蹤?這會有很大的幫助 –
「看起來while循環甚至沒有運行,因爲如果我把循環印出的東西沒有返回。」這意味着ROWID變量會給你帶來問題。所以把它的代碼。即將結果存儲在ROWID中的查詢部分。 –