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?
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
La domanda a cui hai collegato ha anche una risposta per i risultati "FORWARD_ONLY" (es .: la risposta accettata). –