Hi Leute!
Wie funktioniert eine richtige Ergebnisprüfung? Ich hab folgendes Problem, ich prüfe, ob bereits ein Eintrag in der DB ist. Wenn nicht, soll ein neuer gemacht werden, wenn ja, soll überprüft werden, welche Einträge in der DB sind und wenn der neue noch nicht drin ist, dann soll er rein, ansonsten soll nichts gemacht werden. Dafür hab ich ein PreparedStatement, das so aussieht:
Das ResultSet sieht dann so aus:
So, zu Überprüfung benutze ich folgendes:
Bei welchem Datensatz befindet sich jetzt Java, wenn es in die while-Schleife springt? Angenommen es sind 5 Datensätze vorhanden, es ist es dann beim zweiten oder beim ersten? So wie es mir erscheint springt Java bereits bei der If-Prüfung weiter zum nächsten Datensatz, was natürlich fatal wäre, wenn das Ergebnis nur einen Datensatz enthält. Weil dann liefert resCheck.next() beim ersten Durchlauf der while-Schleife schon false und das neue Element wird eventuell gespeichert, obwohl es eigentlich schon drin ist.
Wie prüft man jetzt richtig, ob das Ergebnis etwas zurückgeliefert hat oder ob es einfach null zurückgegeben hat? Kann man vielleicht auch vor der while-Schleife den internen Zeiger wieder zurücksetzen?
Danke schonmal & viele Grüße,
Martin
Wie funktioniert eine richtige Ergebnisprüfung? Ich hab folgendes Problem, ich prüfe, ob bereits ein Eintrag in der DB ist. Wenn nicht, soll ein neuer gemacht werden, wenn ja, soll überprüft werden, welche Einträge in der DB sind und wenn der neue noch nicht drin ist, dann soll er rein, ansonsten soll nichts gemacht werden. Dafür hab ich ein PreparedStatement, das so aussieht:
Code:
PreparedStatement stmtCheck = con.prepareStatement("SELECT Nr, PDF_Name FROM temp_pdf WHERE Nr=?");
Das ResultSet sieht dann so aus:
Code:
stmtCheck.setInt(1, nr);
ResultSet resCheck = stmtCheck.executeQuery();
So, zu Überprüfung benutze ich folgendes:
Code:
if (!resCheck.next()) {
// kein Eintrag vorhanden, neuen speichern
} else {
// ein oder mehrere einträge vorhanden, prüfe, ob aktueller dabei ist
while (resCheck.next()) {
// hier ist die eigentliche prüfung
}
}
Bei welchem Datensatz befindet sich jetzt Java, wenn es in die while-Schleife springt? Angenommen es sind 5 Datensätze vorhanden, es ist es dann beim zweiten oder beim ersten? So wie es mir erscheint springt Java bereits bei der If-Prüfung weiter zum nächsten Datensatz, was natürlich fatal wäre, wenn das Ergebnis nur einen Datensatz enthält. Weil dann liefert resCheck.next() beim ersten Durchlauf der while-Schleife schon false und das neue Element wird eventuell gespeichert, obwohl es eigentlich schon drin ist.
Wie prüft man jetzt richtig, ob das Ergebnis etwas zurückgeliefert hat oder ob es einfach null zurückgegeben hat? Kann man vielleicht auch vor der while-Schleife den internen Zeiger wieder zurücksetzen?
Danke schonmal & viele Grüße,
Martin