Как получить количество строк, содержащихся в ResultSet? - PullRequest
0 голосов
/ 18 октября 2011

Мой запрос должен возвращать ровно одну строку (так как это выборка записи по уникальному идентификатору). Я должен бросить исключение, если результирующий набор пуст, и другое исключение, если оно содержит более 1 строки. Итерации по результирующему набору с помощью while (rs.next ()) в этом случае выглядят не очень красиво, ИМХО. Могу ли я сразу получить количество строк в наборе результатов?

Ответы [ 3 ]

3 голосов
/ 18 октября 2011

Я не думаю, что есть способ сделать это за один вызов метода.

Вы можете использовать метод last() ResultSet, а затем вызвать метод getRow() ResultSet, которыйдаст вам размер ResultSet и при необходимости выдаст исключение на основе размера.

Пожалуйста, не забудьте иметь предложение finally для закрытия всех соединений / ds:)

rs.last();

if(rs.getRow() > 1) {
throw (...);
}
3 голосов
/ 18 октября 2011
rs.first();
if(!rs.isLast())
     throw new Exception(...);

Похоже, вам не нужно знать количество возвращаемых строк, просто если их было больше 1.

0 голосов
/ 18 октября 2011

Вы пробовали: java.sql.ResultSet.isBeforeFirst ()

От Javadoc: Получает, находится ли курсор перед первой строкой в ​​этом объекте ResultSet.

Note:Support for the isBeforeFirst method is optional for ResultSets with a result set type of TYPE_FORWARD_ONLY

Returns:
    true if the cursor is before the first row; false if the cursor is at any other position or the result set contains no ro
...