ResultSet метод "последний" это оптимальный путь? - PullRequest
0 голосов
/ 22 апреля 2009

У меня есть этот код Java, который делает это

ResulSet rs = stmt.executeQuery();
while (rs.next()) {
    .... //do regular processing

    if (rs.last()) {
       //do last record processing
    }

}

Ответы [ 3 ]

4 голосов
/ 22 апреля 2009

Вы должны использовать: isLast () вместо.

Имейте в виду, не все драйверы JDCB поддерживают эту функцию. Очевидно, вы должны проверить это с вашей установкой.

Большинство основных БД работают нормально.

Фиксированный код должен выглядеть следующим образом.

if( rs.isLast() ) { 
   // do last record processing
}
2 голосов
/ 22 апреля 2009

Нет: rs.last () фактически отправит курсор на последнюю строку в ResultSet, что определенно не то, что вы хотите сделать. Вы будете обрабатывать не более 2 строк (первой и последней) из набора результатов.

2 голосов
/ 22 апреля 2009

Лично я бы объявил переменные, полученные из запроса вне цикла, а затем выполнил «обработку последней записи» после цикла.

ResulSet rs = stmt.executeQuery();
long primaryKey;

while (rs.next()) {
    primaryKey = rs.getLong(1);
    .... //do regular processing
}

// Do last record processing.
System.out.println("last primary key = " + primaryKey);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...