Получите RowCount из ResultSet после нескольких вызовов next () - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть следующий код:

//rs is a ResultSet from a prepared statement
rs.last();
this.resultCount = rs.getRow();
rs.beforeFirst();

Если я выполню этот код после того, как выполнил несколько rs.next(), то rs.beforeFirst() будет неправильным.

Итак мой вопрос : как я могу вернуться в текущую позицию, а не в позицию beforeFirst?

1 Ответ

0 голосов
/ 24 сентября 2019

Вопрос: «как мне вернуться к текущей позиции, а не к предыдущей позиции».

Ответ: Вы можете использовать resultSet.absolute(rowIndex);


Подробное объяснение:
Перемещает курсор к указанному номеру строки вthis ResultSet object.
Если номер строки положительный, курсор перемещается на заданный номер строки относительно начала набора результатов.Первый ряд - это ряд 1, второй ряд 2 и т. Д.

Если заданный номер строки отрицателен, курсор перемещается в абсолютную позицию строки относительно конца набора результатов.Например, вызов метода absolute(-1) устанавливает курсор в последнюю строку;вызов метода absolute(-2) перемещает курсор в строку next-to-last и так далее.

Если указанный номер строки равен нулю, курсор перемещается перед первой строкой.


Однако вы можете использовать absolumte(rowIndex) в своей программе, например,

int currRowIndex = resultSet.getRow();
resultSet.last(); // <- can throw if resultSet type is TYPE_FORWARD_ONLY
this.resultCount = resultSet.getRow();
resultSet.absolute(currRowIndex); // <- It will allow you to set cursor position.

Предупреждение: При использовании last()может выдать, если тип resultSet имеет тип TYPE_FORWARD_ONLY.

last
boolean last() throws SQLException
Moves the cursor to the last row in this ResultSet object.<be>

Returns:
 - true if the cursor is on a valid row;
 - false if there are no rows in the result set

Throws:
 - SQLException: if a database access error occurs; this method is called on a closed result set or the result set type is TYPE_FORWARD_ONLY

 - SQLFeatureNotSupportedException: if the JDBC driver does not support
   this method
...