在我的应用程序中,以下代码
ResultSet images = statement.executeQuery("SELECT id, filename, run" +
" FROM images" +
" JOIN comparer_results results ON results.toImageId = images.id" +
" WHERE result <= 100");
while (images.next()) {
statement.executeUpdate("DELETE FROM images WHERE id = "
+ images.getInt("id"));
File imageFile = new File(config.getProperty("system.imageDirectory")
+ File.separator
+ images.getString("filename") + ".jpg");
}
引发异常
java.sql.SQLException: Operation not allowed after ResultSet closed
在imageFile
获取实例化的行中。我的理解是,这是由images.getString("filename")
操作引起的。但为什么ResultSet关闭了?我从不调用这样的方法,结果集上的第一个操作(images.getInt("id")
)工作得很好。
答案 0 :(得分:6)
在你打电话的时候打电话
statement.executeUpdate("DELETE FROM images WHERE id = "
+ images.getInt("id"));
您重新使用了statement
。这意味着以前创建的任何ResultSet
都会自动关闭。
在这种情况下,您必须使用两个Statement
。