Ich werde es veröffentlichen und denke, wenn jemand den gleichen Fehler gemacht hat.
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.
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;
}
Einige Quellcodes wurden geändert. Vielen Dank für den Hinweis auf saka1029 und Kilisame!
Recommended Posts