Как проверить, есть ли в наборе результатов записи без перемещения курсора в Java - PullRequest
1 голос
/ 17 июля 2011

Мне интересно, как проверить, есть ли в наборе результатов возвращенные записи, как показано ниже,

while(((ResultSet) rs).next()){
    ((ResultSet) rs).previous();
    return true;
}

Но я не могу этого сделать, так как тип набора результатов - TYPE_FORWARD_ONLY, есть ли какой-нибудь удобный API для моего случая? wasNull не является правильным наверняка, спасибо за любые указатели!

Даже

Ответы [ 4 ]

4 голосов
/ 02 мая 2012
 if(!resultSet.isBeforeFirst()){
   System.out.println("resultset contin no rows");
 }

isBeforeFirst () возвращает true, если курсор находится перед первой строкой; false, если курсор находится в любой другой позиции или результирующий набор не содержит строк

1 голос
/ 17 июля 2011

Ответ: ты не можешь.Эта природа SQL-строки устанавливается: вы получите уведомление, когда дойдете до конца, но не узнаете, пока не попытаетесь получить следующую запись, а ее нет.Просто так оно и есть.

0 голосов
/ 17 июля 2011

Поскольку вы не можете знать, прежде чем совершить rs.next() ход о состоянии своего ResultSet, вы, вероятно, можете:

  1. выполнить оператор count перед созданием ResultSet или

  2. сначала выполните rs.next(), или rs.first(), и используйте его содержимое, если ваш набор не пустой, как это:

            boolean state = rs.first(); // or rs.next();
            if (state == false)
                System.out.println("empty");
            else {
                System.out.println("not empty");
                while (state) {
                    System.out.println(rs.getInt(1));
                    // use your row ...
                    state = rs.next();
                }
            }
    
0 голосов
/ 17 июля 2011

Если ваш первый вызов rs.next() успешен и он вернул true, это означает, что возвращены некоторые записи.

...