mysql-Datenbank ignoriert executeUpdate-Methode scheinbar

Lastlord

Mitglied
Hi,
ich habe eine Funktion die im wesentlichen hieraus besteht:

stm.executeUpdate("UPDATE " + table+ " SET " + spalte+ " = " + obj + " WHERE "+ benuzerspalte + " = " + benutzerid);
verbindung.commit();

autoCommit ist natürlich auf false

Ich rufe die besagte Funktion 2 Mal auf.
Dabei prüfe ich jeweils den hineingeschriebenen Wert durch anschließendes Abfragen( also im Code vll. 2 Zeilen tiefer).
Nachdem das Programm geschlossen wurde tue ich folgendes:
Ich öffne phpmyadmin, aktualisiere die Ansicht und stelle jedes Mal fest,
dass nur eins der Updates erfolgt ist, obwohl die Debugausgaben das Gegenteil
besagen.
Anfangs hatte ich autoCommit auf true, aber in anderen Threads haben die das manuelle Aufrufen von commit() bevorzugt...:confused:

Ich weiß nicht ob das wichtig ist aber hier noch ein paar Daten:
Ich benutze mysql-Connector 1.5.7
Die Updates erfolgen in einer Spalte vom Typ varchar(200)
In Spalte werden Integer geschrieben
Für beide Abfragen benutze ich das selbe Statement. Ist das schlimm?
So sieht das Update-Commando aus z.B. aus:
UPDATE webs_user SET Sessions = '8' WHERE userID = 1

Wenn ihr mir helfen könntet wäre das suuper.

Gruß David
 
Zuletzt bearbeitet:
Ein Frage würd ich gern nochma stellen:
Wann werden die Änderungen in einer Datenbank den eigentlich übernommen.
Ich dachte bei commit(). Oder erst bei stm.close()? Oder erst bei commit()?

http://www.roseindia.net/jdbc/Jdbc-execute-update.shtml

Dieses sehr kurze Beispiel verunsichert mich... .
Dort wird commit() garnicht aufgerufen und autocommit ist auf false.

Außerdem dachte ich man soll bei XXX=YYY immer XXX='YYY' schreiben.
Das machen die da auch nicht.

Ich bin für jeden Hinweis dankbar.
 
Also ich hab das Problem nur umgangen, indem ich einfach statt dem Code oben geschrieben habe:

String command = "UPDATE " + table + " SET "
+ spalte+ " = '" + obj + "' WHERE "
+ benuzerspalte + " = " + benutzerid;
PreparedStatement p = (PreparedStatement) verbindung.prepareStatement(command);
p.executeUpdate();

Warum das funktioniert und das andere nicht ist mir völlig unklar.
Scheint an dem Statement-Objekt zu liegen

Wenn jemand ne Idee hat wieso das andere nicht geht, dann bitte posten.
 
Zurück