ResultSet
- это очень общий интерфейс, и он основан на курсоре .
Вот цитата из официальной документации:
A ResultSet
Объект поддерживает курсор, указывающий на его текущую строку данных.Первоначально курсор располагается перед первым рядом.Метод next
перемещает курсор на следующую строку, и поскольку он возвращает false
, когда в объекте ResultSet
больше нет строк, его можно использовать в цикле while
для итерации по набору результатов.
Это означает, что вы должны выполнить next
, чтобы переместить курсор. Здесь - графическая иллюстрация.
Так почему ResultSet
основан на курсоре?
Чтобы базовая реализация не загружала потенциально огромное количествостроки в память.Курсор является очень распространенным шаблоном для прокрутки потенциально больших данных.Например, PgResultSet использует для этого ResultCursor .
PS Также всегда выполняйте ResultSet.close()
для освобождения ресурсов.