Что такое logi c за results.next ()? - PullRequest
0 голосов
/ 10 июля 2020
ResultSet results = statement.executeQuery(sb.toString())) {
List<Artists> artists = new ArrayList<>();
while(results.next()){
    Artists artist = new Artists();
    artist.setId(results.getInt(INDEX_ARTIST_ID));
    artist.setName(results.getString(INDEX_ARTIST_NAME));
    artists.add(artist);
}
return artists;

Я пытаюсь получить все записи, которые хранятся в результатах. Если я дошел до последнего элемента, results.next () будет ложным. Итак, как можно добавить сюда последний элемент? Может кто-нибудь, пожалуйста, четко объясните, что происходит на этом l oop?

1 Ответ

2 голосов
/ 10 июля 2020

Если запрос возвращает, например, 3 строки, ваш код вызовет next() 4 раза.

При первых 3 вызовах он вернет true, а значения столбцов строка доступна через методы getXxx().

При 4-м вызове next() возвращает false, и ни одна строка не доступна, то есть методы getXxx() вызовут исключение, если вы попытаетесь их вызвать.

Все это объясняется в javado c:

Перемещает курсор на одну строку вперед от его текущей позиции. Курсор ResultSet изначально располагается перед первой строкой; первый вызов метода next делает первую строку текущей; второй вызов делает вторую строку текущей строкой и т. д.

Когда вызов метода next возвращает false, курсор устанавливается после последней строки. Любой вызов метода ResultSet, для которого требуется текущая строка, приведет к выдаче SQLException.

...