Ответ
Нет. Сразу после выполнения запроса и получения объекта ResultSet его курсор располагается перед первой строкой (before-first position). Для доступа к данным необходимо явно переместить курсор на первую строку.
Ключевой метод — next():
- Первый вызов
next()перемещает курсор с позиции перед первой строкой на первую строку. - Каждый последующий вызов
next()перемещает курсор на следующую строку. - Метод возвращает
true, если новая текущая строка существует, иfalse, когда строк больше нет.
Пример корректного обхода:
ResultSet rs = statement.executeQuery("SELECT id, name FROM users");
// Курсор сейчас ПЕРЕД первой строкой. Вызов rs.getInt("id") здесь выбросит SQLException.
while (rs.next()) { // Перемещает курсор и проверяет наличие строки
int id = rs.getInt("id"); // Чтение данных текущей строки
String name = rs.getString("name");
System.out.println(id + ": " + name);
}
// После выхода из цикла курсор находится ПОСЛЕ последней строки.
Важно: Без предварительного успешного вызова next() любые попытки получить данные (getInt, getString и т.д.) приведут к SQLException с сообщением, подобным "ResultSet before start of result set".