Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Update fügt falschen wert ein?


Ledersocke - Sa 10.01.09 20:24
Titel: Update fügt falschen wert ein?
Guten Tag,

es ist zwar blöd das ich meinen ersten beitrag direkt als Frage schreiben muss aber ich hoffe trotzdem auf konstruktive antworten :)

und zwar programmiere ich zurzeit mit ein paar freunden ein Browsergame und die server scripts laufen über c#

nun wollte ich eine Zeichenkette(string) mithilfe des UPDATE-Befehls in eine Datenbank schreiben,
und in dieser Variable ist auch definitiv ein wert.

doch in die tabelle der datenbank wird nicht der wert sondern nur eine 0 eingefügt.

habe auch schon gegoogelt aber nix gefunden...


hier ist mal kurz der befehl den ich verwende:


C#-Quelltext
1:
2:
3:
4:
dbcmd.CommandText = "UPDATE doerfer SET username = '"+spielername_angreifer+"' AND zustimmung = 100 WHERE dorfid LIKE '" + opfer + "'";
                        dbconnect.Open();
                        dbcmd.ExecuteNonQuery();
                        dbcmd.Connection.Close();


Ledersocke - Sa 10.01.09 22:02

ok ich habe das problem bereits gelöst es tut mir leid,
dass ich zu vorschnell hier gefragt habe

Statt dem AND musste ein komma in den befehl

MFG Ledersocke


C#-Quelltext
1:
2:
3:
4:
dbcmd.CommandText = "UPDATE doerfer SET username = '"+spielername_angreifer+"', zustimmung = 100 WHERE dorfid LIKE '" + opfer + "'";
                        dbconnect.Open();
                        dbcmd.ExecuteNonQuery();
                        dbcmd.Connection.Close();


JüTho - So 11.01.09 12:32

Hallo und noch :welcome:

Auch wenn Du das konkrete Problem schon gefunden hast, möchte ich dringend empfehlen:

Benutze für variable Inhalte eines SQL-Befehls niemals String-Verknüpfung, sondern immer DbParameter!


C#-Quelltext
1:
2:
3:
4:
5:
6:
dbcmd.CommandText = "UPDATE doerfer SET username = @Angreifer, "
   + "zustimmung = @Wert "
   + "WHERE dorfid LIKE @Opfer;"
dbcmd.Parameters.AddWithValue("@Angreifer", spielername_angreifer);
dbcmd.Parameters.AddWithValue("@Wert"100);
dbcmd.Parameters.AddWithValue("@Opfer", opfer + "%");

Wie genau die Parameter deklariert werden müssen (@ oder ? oder :, mit oder ohne Namen), hängt vom DbProvider ab.

Gruß Jürgen