【发布时间】:2017-04-16 06:29:56
【问题描述】:
我查看了很多答案,但遗憾的是没有人回答我的问题,我仍然无法弄清楚为什么我会收到 ResultSet closed。
这是导致问题的try 代码 sn-p:
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 循环甚至没有运行,因为如果我将 print 语句放入循环中,则不会返回任何内容。
【问题讨论】:
-
什么时候出现这个错误?
-
你能添加错误的堆栈跟踪吗?会有很大帮助
-
"看起来 while 循环甚至没有运行,因为如果我将 print 语句放入循环中,则不会返回任何内容。"这意味着 ROWID 变量给你带来了问题。所以把它的代码。即在 ROWID 中存储结果的查询部分。
-
这实际上取决于她将 print 语句放在哪里:如果她将 print 语句作为 while 循环内的最后一行,并且错误是由第一行(或任何其他行)引起的,那么它将正常打印不工作
-
@ManojShukla 但我怀疑这是错误,否则我认为她不会收到那个例外。我宁愿认为它与声明的
execute有关
标签: java sqlite jdbc sqlexception