c#
  • sql
  • 2016-10-03 2 views -4 likes 
    -4

    ich auf diesem Code bin stecken:C# Syntaxfehler in SQL Update-Anweisung

    con.Open(); 
    
    OleDbCommand cmd1 = new OleDbCommand(); 
    cmd1.Connection = con; 
    cmd1.CommandText = "update login set password='"+passw.Text+"', Username='" + username.Text + "', firstname='" + user_name.Text + "', address='" + useraddress.Text + "',contact_no='" + usercontactno.Text + "',email='" + useremail.Text + "',birthday='" + userbirthday.Text + "',age='" + userage.Text + "' where id=" + nem + " "; 
    
    cmd1.ExecuteNonQuery(); 
    con.Close(); 
    

    Die Abfrage funktioniert gut, aber jedes Mal, wenn ich es laufen, heißt es, dass „password = '‚+ passw.text +‘ '"hat einen Syntaxfehler. Wenn ich diese Zeile entferne, funktioniert das Update korrekt.

    +7

    Speichern Sie Klartextkennwörter NICHT. Es ist nicht die 1970er Jahre! Beschreiben Sie auch keine eingegebenen Textfelder: Verwenden Sie Parameter. –

    +0

    gib den Text auf der Konsole aus und sieh es dir an! Wenn passw.Text ein 'du bist fest in der Tat .. – TaW

    +8

    Little Bobby Tables mag diesen Code. –

    Antwort

    0

    Die beiden höchstwahrscheinlich Probleme ich jetzt sehen:

    1. passw.Text keinen Wert und die Login-Tabelle, Passwort Spalte lässt keine Nullwerte
    2. die Login-Tabelle haben haben möglicherweise ein nicht Spalte "Passwort"
    +0

    Ein anderes Problem, könnte sein, 'passw.Text' zurückgeben ein Sonderzeichen – Jacky

    1

    Passwort ist ein reserviertes Schlüsselwort. Sie müssen es als [Passwort] oder „Passwort“ zitieren, z.B .:

    cmd1.CommandText = "update login set [password]='"+passw.Text+"', Username='" + username.Text + "', firstname='" + user_name.Text + "', address='" + useraddress.Text + "',contact_no='" + usercontactno.Text + "',email='" + useremail.Text + "',birthday='" + userbirthday.Text + "',age='" + userage.Text + "' where id=" + nem + " "; 
    

    Auch eine andere wichtige Sache, die Sie vermeiden müssen, ist vorbei Eingabezeichenfolgen in die SQL-Anweisung wie folgt. Sie müssen Anführungszeichen in den Eingabezeichenfolgen verwenden. Der Vorname, der auf Bla'bla gesetzt ist, bricht deinen Code. Der beste Weg, dies zu vermeiden, ist die Verwendung von Parametern.

    Schließlich sind sowohl die Verbindung als auch das Befehlsobjekt verfügbar, daher wäre es am besten, sie in einen using-Block zu packen.

    +0

    Guter Fang! Obwohl Password __not__ in __all__ SQL [Dialekten] (http://developer.mimer.se/validator/sql-reserved-words.tml) reserviert ist, kann es [hier] sein (http://www.petefreitag.com/ tools/sql_reserved_words_checker /? Wort = Passwort) . – TaW

    Verwandte Themen