доступ к ResultSet

241
13 июня 2018, 16:30

Есть метод, где выполняется запрос:

public static ResultSet selectTemplates() throws SQLException {
    String select = "select * from templates";
    Connection connection = DBConnector.getDBConnection();
    PreparedStatement statement = connection.prepareStatement(selectTemplates);
    ResultSet resultSet = statement.executeQuery();
    return resultSet;
}

Есть другой метод, где происходит обращение к resultSet и попытка забить значения в Map:

public static void main(String[] args) throws SQLException {
...
ResultSet resultSet = database.SQL.selectTemplates();
while (resultSet.next()) {
      map.put(resultSets.getString("id"), false);
      }
...
}

В таком виде resultSet доступен и отдаёт данные. Но если я меняю первый метод, добавляя try:

public static ResultSet selectTemplates() throws SQLException {
String select = "select * from templates";
try (Connection connection = DBConnector.getDBConnection();
     PreparedStatement statement = connection.prepareStatement(selectTemplates)) {
     ResultSet resultSet = statement.executeQuery();
     return resultSet;
    }
}

Я получаю ошибку: Exception in thread "main" java.sql.SQLException: Закрытый набор результатов: next

Объясните, почему так происходит?

Answer 1

Выдержка из JavaDoc к ResultSet классу

A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results.

Ваш try с ресурсом закрывает Statement

READ ALSO
Скрыть элементы управления Яндекс Карт

Скрыть элементы управления Яндекс Карт

Через конструктор создал карту и сгенерировался следующий код:

216
Смена цвета текста на гифку при наведении

Смена цвета текста на гифку при наведении

Всем привет Недавно друзья заказывали билет на фестиваль на этом сайте https://bmfestcom/ (не реклама) и показали мне

333
Добавление элемента в новый вопрос

Добавление элемента в новый вопрос

Имеется блок с вопросом и ответамиПри нажатии на "Добавить вопрос", а затем в новом вопросе "Добавить ответ" - добавляет новый ответ только...

252