isLast() для набора результатов TYPE_FORWARD_ONLY

Я пытался найти способ узнать, нахожусь ли я в последней строке моего набора результатов, и я нашел метод isLast().

Я сделал что-то вроде:

if(rs.isLast()) {
    //do some operation here
}

Но мне выдает ошибку: запрошенная операция не поддерживается только для наборов результатов вперед.

Я искал решение, и оно сказало, что я должен изменить TYPE_FORDWARD_ONLY. Но прямо сейчас мне было интересно, есть ли способ узнать, нахожусь ли я в последнем наборе записей, используя TYPE_FORWARD_ONLY?

Спасибо.


person Atasha    schedule 15.05.2012    source источник


Ответы (3)



Ваш соединитель, вероятно, не поддерживает TYPE_FORWARD_ONLY, вы можете проверить это, используя DatabaseMetaData#supportsResultSetType(int).

person alain.janinm    schedule 15.05.2012
comment
Все драйверы JDBC должны как минимум поддерживать наборы результатов TYPE_FORWARD_ONLY (раздел 6.3 спецификации JDBC 4.1). Такие методы, как afterLast, isLast и т. д., не обязательно реализовывать для TYPE_FORWARD_ONLY и, как правило, не очень полезны для наборов результатов TYPE_FORWARD_ONLY (именно поэтому их не требуется реализовывать). - person Mark Rotteveel; 15.05.2012

Если ваш драйвер не поддерживает afterLast и isLast и вы можете использовать только наборы результатов TYPE_FORWARD_ONLY, вам нужно будет обработать все строки, а затем выполнить дополнительные действия, которые вы хотите сделать с последней строкой, после того, как вы прочитали все строки.

person Mark Rotteveel    schedule 15.05.2012