Закрытый ResultSet без закрывающего оператора - PullRequest
2 голосов
/ 31 марта 2012

В моем приложении следующий код

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 Ответ

6 голосов
/ 31 марта 2012

Assoon, как вы назвали

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

вы повторно использовали statement. Это означает, что все ранее созданные ResultSet закрываются автоматически.

В этом случае вы должны использовать два Statement.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...