Używam HSQLDB w moim programie. Chcę sprawdzić, czy mój zestaw wyników jest pusty, czy nie.Sprawdź, czy ResultSet jest pusty w Javie
//check if empty first
if(results.next() == false){
System.out.println("empty");
}
//display results
while (results.next()) {
String data = results.getString("first_name");
//name.setText(data);
System.out.println(data);
}
Powyższa metoda nie działa poprawnie. Zgodnie z tym post muszę wywołać .first()
lub .beforeFirst()
, aby ustawić kursor w pierwszym wierszu, ale .first()
i .beforFirst()
nie są obsługiwane w HSQL. Próbowałem też dodać connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
, ale nadal otrzymuję ten sam wynik (otrzymuję komunikat pusty i dane z DB !!!) Co ja tu robię źle?
Na czym polega problem? Obserwacja: 'result.next()' przenosi kursor do pierwszego wiersza przy pierwszym wywołaniu (w 'if'). W związku z tym, jeśli istnieją dane, warunek Twojej pętli while przeniesie go do drugiego rzędu, gdy zacznie skutecznie pomijać pierwszy wiersz. Zamiast tego możesz użyć pętli do-while. – Abhi
Pytanie, z którym się łączysz, ma również odpowiedź na zestawy wyników "FORWARD_ONLY" (np. Zaakceptowana odpowiedź). –