Ich verwende HSQLDB in meinem Programm. Ich möchte überprüfen, ob mein Result Set leer ist oder nicht.Überprüfen, ob ResultSet leer ist in Java
//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);
}
Die obige Methode funktioniert nicht richtig. Gemäß dieser post muss ich .first()
oder .beforeFirst()
aufrufen, um den Cursor auf die erste Zeile zu setzen, aber .first()
und .beforFirst()
werden in HSQL nicht unterstützt. Ich habe auch versucht, connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
hinzuzufügen, aber ich bekomme immer noch das gleiche Ergebnis (Ich bekomme die Nachricht leer und die Daten aus der DB !!!) Was mache ich hier falsch?
Was ist das Problem? Eine Beobachtung: Die 'results.next()' bewegt den Cursor in die erste Zeile, wenn sie zum ersten Mal aufgerufen wird (im 'if'). Wenn also Daten vorhanden sind, verschiebt die Bedingung Ihrer while-Schleife sie in die zweite Zeile, wenn sie beginnt, die erste Zeile effektiv zu überspringen. Sie können stattdessen eine Do-While-Schleife verwenden. – Abhi
Die Frage, die Sie verknüpft haben, hat auch eine Antwort auf 'FORWARD_ONLY' Resultsets (zB: die akzeptierte Antwort). –