Problem mit ResultSet.next()
Sascha
- datenbank
0 Vinzenz Mai0 Sascha0 Pete0 Sascha
0 Frank (no reg)
0 Pete
Hallo,
ich habe da ein Problem bei der Benutzung von ResultSet.next().
Ich will ganz einfach überprüfen, ob zu einer Suchanfrage Daten in meiner Datenbank vorliegen.
Kurzer Auszug aus dem vereinfachten Code:
ResultSet rs1 = statement.executeQuery("SELECT * FROM article WHERE UPPER(article_title) LIKE UPPER(" + "'%" + title + "%')");
if(!rs1.next())
System.out.println("kein artikel");
if(rs1.next())
System.out.println("artikel gefunden");
Was mich verwirrt ist, dass die erste if Abfrage funktioniert (wenn das Datum nicht vorliegt wird "kein Artikel" ausgegeben, die zweite if Abfrage funktioniert aber nicht (wenn eben schon Datum vorliegt).
Wo ist mein Bug? Danke für die Hilfe im vorraus.
lg
Sascha
Hallo
if(!rs1.next())
System.out.println("kein artikel");if(rs1.next())
System.out.println("artikel gefunden");
Was mich verwirrt ist, dass die erste if Abfrage funktioniert (wenn das Datum nicht vorliegt wird "kein Artikel" ausgegeben, die zweite if Abfrage funktioniert aber nicht (wenn eben schon Datum vorliegt).
Wo ist mein Bug? Danke für die Hilfe im vorraus.
Du möchtest in Wirklichkeit den else-Zweig benutzen.
Überlege: Was bewirkt .next()?
Wie oft wird es im Erfolgsfall bei Dir ausgeführt.
Freundliche Grüße
Vinzenz
ja, im Prinzip möchte ich natürlich den else Zweig nutzen.
ok, ich überlege was next() macht ;-):
Wenn ich es richtig verstanden habe (bin noch recht neu in SQL), zeigt next() auf eine row, falls eine in meinem ResultSet gefunden wird.
Bei meinen jetzigen Testläufen habe ich genau einen Eintrag in der DB.
hmm, überlegen hilft jetzt vielleicht weiter ;-)... willst du mir sagen, dass nach meiner ersten if Abfrage auf row1 und in der zweiten bereits auf (die nicht vorhandene) row2 gezeigt wird weil ja nur ein Eintrag vorhanden ist oder bin ich auf dem völlig falschen Dampfer?
Ich habs gerade mit einem zweiten Testeintrag versucht und komme jetzt in die zweite if Abfrage. Wenn ich else verwende klappts auch mit einem.
Ich danke dir für den Tip mal ein wenig angestrengter über next() nachzudenken ;-).
Wenn ich es doch nicht richtig verstanden habe, belehre mich hier bitte.
Danke für die Hilfe!!
eine Frage zum Schluss. Wie kann ich den next-Zeiger auf 0 zurücksetzen falls ich es nicht mit einem else zweig realisieren möchte?
grüße
sascha
eine Frage zum Schluss. Wie kann ich den next-Zeiger auf 0 zurücksetzen falls ich es nicht mit einem else zweig realisieren möchte?
.moveFirst();
vielen dank, that´s it.
Hi
bin noch recht neu in SQL
Dein Problem hat eher recht wenig mit SQL zu tun sondern mit dieser Sprache (und deren Objekten), die du aussen drumherum benutzt. Sieht wie Java aus??
Ciao, Frank
Hallo,
ich habe da ein Problem bei der Benutzung von ResultSet.next().
Ich will ganz einfach überprüfen, ob zu einer Suchanfrage Daten in meiner Datenbank vorliegen.Kurzer Auszug aus dem vereinfachten Code:
ResultSet rs1 = statement.executeQuery("SELECT * FROM article WHERE UPPER(article_title) LIKE UPPER(" + "'%" + title + "%')");
if(!rs1.next())
System.out.println("kein artikel");if(rs1.next())
System.out.println("artikel gefunden");
Ich bin der Meinung das bei .next() in den Nächsten Eintrag gesprungen wird, in der ersten Verzweigung wird das also gemacht und true zurückgegeben, bei der zweiten Bedingung ist er vielleicht schon am Ende des RecordSets weshalb er da ebenfalls nicht reingeht, versuche
if(!rs1.next())
System.out.println("kein artikel");
else(rs1.next())
System.out.println("artikel gefunden");