2014-06-25 18 views
6

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?

+2

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

+0

Die Frage, die Sie verknüpft haben, hat auch eine Antwort auf 'FORWARD_ONLY' Resultsets (zB: die akzeptierte Antwort). –

Antwort

11

Wenn ich Ihr Ziel verstehen, könnten Sie do while Schleife

if (!results.next()) { 
    System.out.println("empty"); 
} else { 
    //display results 
    do { 
    String data = results.getString("first_name"); 
    //name.setText(data); 
    System.out.println(data); 
    } while (results.next()); 
} 

Oder könnten Sie halten nur eine count wie so,

int count = 0; 
//display results 
while (results.next()) { 
    String data = results.getString("first_name"); 
    //name.setText(data); 
    System.out.println(data); 
    count++; 
} 
if (count < 1) { 
    // Didn't even read one row 
} 
+0

Ihre erste Lösung funktioniert wie Magie.Vielen Dank :) –

+0

Das gleiche hier, ich steckte dies nur in und eine Reihe von JUnits begann ordnungsgemäß zu arbeiten. – thonnor