2014-06-25 21 views
6

Sto utilizzando HSQLDB nel mio programma. Voglio controllare se il mio set di risultati è vuoto o meno.Verificare se ResultSet è vuoto 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); 
} 

Il metodo precedente non funziona correttamente. In base a questo post devo chiamare .first() o .beforeFirst() per riposare il cursore sulla prima riga, ma .first() e .beforFirst() non sono supportati in HSQL. Ho anche provato ad aggiungere connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ma ottengo lo stesso risultato (ottengo il messaggio vuoto e i dati dal DB !!!) Cosa sto facendo male qui?

+2

Qual è il problema? Un'osservazione: il 'results.next()' sposta il cursore sulla prima riga quando viene chiamato per la prima volta (in 'if'). Quindi, se ci sono dati, le condizioni del tuo ciclo while lo sposteranno sulla seconda riga quando inizia a saltare in modo efficace la prima riga. È possibile utilizzare invece un ciclo do-while. – Abhi

+0

La domanda a cui hai collegato ha anche una risposta per i risultati "FORWARD_ONLY" (es .: la risposta accettata). –

risposta

11

Se ho ben capito il vostro obiettivo, si potrebbe usare do while ciclo

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()); 
} 

Oppure, si può solo tenere un count in questo modo,

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

la tua prima soluzione ha funzionato come per magia. Grazie :) –

+0

Stessa cosa qui, ho solo bloccato questo e un gruppo di JUnit ha iniziato a funzionare correttamente. – thonnor