我对此代码有疑问:
ResultSet dane = statement.executeQuery("SELECT * FROM ProWarns WHERE blahblah = '" + cel + "'");
while (dane.next()) {
// some code (only get some string from result)
if (TimeEnd <= EndTime) {
statement.executeUpdate(
"DELETE FROM ProWarns WHERE id = '" + id + "'"); //and error
statement.executeUpdate(
"UPDATE ProWarnsPlayers SET num = '" + NewV + "'" WHERE Pl = '"+ tar + "'");
}
}
错误:java.sql.SQLException:ResultSet关闭后不允许操作。错误在哪里,我该如何解决?
PS:
我包含了Pastebin我的数据库类,以防它有用。
答案 0 :(得分:1)
Statement
对象缓存其结果集,因此当您在for循环中执行其他操作时,原始结果集将“重置”。当您致电dane.next
时,会导致发生错误。来自Javadoc:
默认情况下,每个Statement对象只能打开一个ResultSet对象 同时。因此,如果读取一个ResultSet对象是 与另一个的读取交错,每个必须已经生成 通过不同的Statement对象。 Statement中的所有执行方法 如果是,接口隐式关闭一个statment的当前ResultSet对象 打开一个。
选项?使用另一个Statement
对象来执行内部查询。