[JAVA] Resultsets next () ist keine "Methode, um festzustellen, ob es ein ResultSet next gibt".

Es stellt sich heraus, dass er rs.next () missverstanden hatte.

Ich werde es veröffentlichen und denke, wenn jemand den gleichen Fehler gemacht hat.

Über die Interpretation von rs.next ()

Ich dachte, dass rs.next () "eine Methode ist, die nur bestimmt, ob es als nächstes ein ResultSet gibt".

Außerdem scheint es eine Funktion zu geben, "von der aktuellen Position zur nächsten Zeile zu gehen und den Cursor zu platzieren". (Weitere Informationen finden Sie unter Oracle-Seite.)

Fehler.java


ResultSet rs = stmt.executeQuery(sql);

//Wenn kein Ergebnis vorliegt, geben Sie null zurück
if(rs.next()){                       //← Hier befindet sich der Cursor in der ersten Zeile des Ergebnisses
    return null;
}

//2.Erstellen Sie eine Liste
while (rs.next()) {                  //← Hier befindet sich der Cursor in der zweiten Zeile des Ergebnisses
    list.add(rs.getString("name"));  //← Hier wird der Name der zweiten Zeile als Ergebnis genommen
}

Ich habe wie oben codiert. Falsch. Die von Java generierte Liste ist eine Zeile weniger als SQL mit einem Befehl! Ich war eine Stunde lang besorgt ... Das sollte es auch sein.

Vor dem Drehen mit while hat der Cursor die erste Zeile des Ergebnisses erreicht Als ich versuchte, es mit while zu drehen, traf der Cursor die zweite Zeile des Ergebnisses. Die erste Zeile des Ergebnisses wurde nicht zur Liste hinzugefügt.

Richtiger Fall

Wenn Sie Folgendes tun, wird anscheinend auch die Verarbeitung angewendet, wenn das Ergebnis 0 ist.

Richtige Antwort.java


ResultSet rs = stmt.executeQuery(sql);

//Fügen Sie der Liste Daten hinzu
while (rs.next()) {
    list.add(rs.getString("Feldname"));
}

//Wenn die Liste von stammt, geben Sie null zurück
if(list.isEmpty()){
    return null;
}

Nachtrag

Einige Quellcodes wurden geändert. Vielen Dank für den Hinweis auf saka1029 und Kilisame!

Recommended Posts

Resultsets next () ist keine "Methode, um festzustellen, ob es ein ResultSet next gibt".
Der Fall, in dem das nächste () der Ergebnismenge mit der Beurteilungsmethode verwechselt wurde, ob es das nächste gibt
Verwenden Sie den Modifikator # isStatic, um festzustellen, ob die Methode [Reflection] statisch ist.
Wenn es einen Statusübergang gibt, erstellen wir eine Statusklasse
Erstellen Sie abschließend eine Methode, um festzustellen, ob ein Zeichen vorhanden ist
So erstellen Sie eine Methode
Was tun, wenn javax.el.ELException: Kein gültiger Methodenausdruck: wird angezeigt, wenn der JSF-Bildschirm angezeigt wird
[Ubuntu 20.04] Was tun, wenn der externe Monitor nicht erkannt wird?
[Rails] Was tun, wenn keine Daten in der Datenbank registriert sind?
Was tun, wenn Sie mit Reißverschluss sterben, wenn Sie Pom haben, wenn Sie ein ausführbares Glas mit Gradle erstellen?
Was tun, wenn der Vorgang nicht zulässig ist, wenn ein Befehl im Terminal ausgeführt wird?
Java Calendar ist kein Singleton.
Um kein statischer Onkel zu sein
Was tun, wenn das Hintergrundbild nach der Bereitstellung nicht angewendet wird?
Was tun, wenn das Präfix c in JSP nicht gebunden ist?
[Java] Bedingte Verzweigung ist eine if-Anweisung, es gibt jedoch auch einen bedingten Operator.
Rufen Sie den Typ eines Elements eines Arrays ab, um festzustellen, ob es sich um ein Array handelt
Wenn die HTTP-Methode nicht angegeben ist, fordert die Browserseite GET an