Что такое ResultSet в JDBC?

«Что такое ResultSet в JDBC?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ResultSet — это объект в JDBC, представляющий таблицу данных, полученную в результате выполнения SQL-запроса (обычно через Statement или PreparedStatement). Он действует как итератор для пошагового доступа к строкам результата.

Ключевые особенности:

  • Навигация по строкам: методы next(), previous(), absolute(int row), relative(int rows).
  • Получение данных: методы getString(), getInt(), getDate() и др. по индексу столбца (начиная с 1) или по его имени.
  • Типы курсоров: может быть только для чтения (TYPE_FORWARD_ONLY) или прокручиваемым (TYPE_SCROLL_INSENSITIVE/SENSITIVE).
  • Режим обновления: может быть только для чтения (CONCUR_READ_ONLY) или обновляемым (CONCUR_UPDATABLE).

Пример использования:

Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");

while (rs.next()) {
    // Получение данных по имени столбца
    int id = rs.getInt("id");
    // Получение данных по индексу столбца (второй столбец)
    String name = rs.getString(2);
    System.out.println(id + ": " + name);
}

// Важно закрывать ресурсы, лучше использовать try-with-resources
rs.close();
stmt.close();

Важно: ResultSet необходимо закрывать (close()) для освобождения ресурсов базы данных. Рекомендуется использовать try-with-resources для автоматического управления.