Tomi: MYSQL "Anfängerproblem..."

Hallo

Ich versuche nun schon seit ein paar Stunden folgendes.

ich mache eine Abfrage auf die tabelle tbl_timer, und vergleiche den Wert von minutes (den ich in einem Formular eingebe und in eine Sessionvariable minutes "speichere") mit dem Wert timer_value der tbl_timer.
Die tbl_timer sieht so aus:
timer_nr  timer_value
1             5
2             10
3             15
.             .
.             .

ResultSet rs = s.executeQuery("SELECT timer_nr FROM tbl_timer WHERE timer_value LIKE" + minutes);

String timer = rs.getString("timer_nr");

Die SQLException gibt folgendes aus:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.

Was mache ich falsch???

Danke für eure Hilfe....
Tomi

  1. Hallo Tomi,

    Die tbl_timer sieht so aus:
    timer_nr  timer_value
    1             5
    2             10
    3             15
    .             .
    .             .

    ResultSet rs = s.executeQuery("SELECT timer_nr FROM tbl_timer WHERE timer_value LIKE" + minutes);

    Von Java hab' ich keinen blassen Schimmer, aber die Abfrage würde ich schon umformulieren in:

    "SELECT timer_nr FROM tbl_timer WHERE timer_value =" + minutes

    Denn Dein timer_value-Feld sieht nach Integer aus und LIKE ist für Zeichenkettenvergleiche da.

    Sicherheitshalber sollte man die minutes noch escapen, keine Ahnung wie das in Java geht.

    Anschließend prüfe, ob Deine Abfrage überhaupt Werte zurückliefert.

    Gruss,

    Vinzenz

  2. Hi Tomi,

    ResultSet rs = s.executeQuery("SELECT timer_nr FROM tbl_timer WHERE timer_value LIKE" + minutes);
    Was mache ich falsch???

    Du machst zuviel auf einmal.

    Du versuchst, in einer einzigen Zeile sowohl Deine Query zusammenzubauen als auch sie auszuführen und zudem auch noch die Ergebnismenge einzusammeln. Wenn dabei irgendwas schief geht, dann hast Du keine Chance, zu verstehen, wo Dein Problem liegt - dafür gibt es nämlich viele Möglichkeiten.

    Zerlege diese Zeile also erst mal in einzelne Schritte. Baue die Query als String zusammen, und laß Dir die entsprechende Zeichenkette irgendwohin ausgeben, wo Du sie ansehen kannst. (Muß da nicht noch ein Semikolon ans Ende der Query? Das fehlt bei Dir ... nein, ich meine nicht das Semikolon hinter dem Funktionsaufruf, sondern eines, das innerhalb des kompletten Strings liegen würde.)

    Sobald diese Query etwas taugt, lasse sie ausführen. Wahrscheinlich bekommst Du dann - je nach Deiner verwendeten API zur SQL-Datenbank - irgend eine Art von Rückmeldung, ob das geklappt hat und wenn nicht, woran es lagt (Fehlermeldungstext). Frage diese Rückmeldung ab und gib den Text ggf. aus.

    Erst wenn Du sicher bist, daß die Query erfolgreich ausgeführt wurde (also im entsprechenden ELSE-Fall Deiner Programmlogik), beginne mit dem Einsammeln der Ergebnisse. Falls Du das versuchst, obwohl gar keine Ergebnisse da sind, wirst Du nicht glücklich werden und zum ursprünglichen Fehler weitere Fehler hinzufügen, deren Fehlermeldungen Dich von der eigentlichen Ursache nur ablenken.

    Also: Nicht so schnell mit den jungen Pferden. Einen Schritt nach dem anderen, dann weißt Du immer, wo Du gerade bist. Je kleiner ein Schritt ist, um so einfacher ist es, ihn zu beherrschen.

    Viele Grüße
          Michael

    --
    T'Pol: I meant no insult.
    V'Lar: Of course not. You're simply speaking your mind ... as you always have.