关闭ResultSet而不关闭语句

时间:2012-03-31 11:50:27

标签: java mysql sql jdbc

在我的应用程序中,以下代码

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"))工作得很好。

1 个答案:

答案 0 :(得分:6)

在你打电话的时候打电话

statement.executeUpdate("DELETE FROM images WHERE id = "
    + images.getInt("id"));

您重新使用了statement。这意味着以前创建的任何ResultSet都会自动关闭。

在这种情况下,您必须使用两个Statement