В этом дизайне API нет ничего плохого.next()
- Перемещает курсор на одну строку от его текущей позиции.Таким образом, драйвер JDBC имеет только курсор для набора результатов.Он получает каждую строку из базы данных через этот курсор каждый раз, когда вы вызываете метод next ().Вполне логично использовать некоторые «исключения» в сценариях, связанных с очень большим количеством строк, как часть запроса таблицы.
Поскольку вы «проектируете» свой собственный драйвер на основе csv, вы свободныизменить поведение next()
API .Хотя в подписи указано, что она может выдать SQLException
, вы можете закодировать реализацию метода next
так, чтобы он возвращал пустой или частично заполненный объект, чтобы сделать его отказоустойчивым.
Существуют устаревшие методы длянайти общее количество записей в ResultSet, например, вызвать last()
, а затем вызвать ResultSet::getRow()
, чтобы узнать количество записей, прежде чем вы начнете выполнять итерации.