2016-03-22 12 views
0

Ich erstelle ein Programm, das die Aktualisierung von Benutzerdaten in einem ACCESS-Db erfordert. Beim Ausführen des Codes erhalte ich einen Fehler. meine Update-Anweisung ist ..Aktualisiere SQL-Syntaxfehler

con.Open(); 
string update = "UPDATE userdata SET full_name='"+name+ 
       "', user_type ='" + user_type + 
       "', gender = '" + gender + 
       "', password='"+password+ 
       "', tel_number='"+tel_number+ 
       "', blood_type ='"+blood_type+ 
       "'WHERE user_id='" + user_id + "'";         

cmd = new OleDbCommand(update, con); 
cmd.ExecuteNonQuery(); 

con.Close(); 
MessageBox.Show("Userdata successfully updated!"); 
+0

durch die Art, wie die Update Felder in genau dieser Reihenfolge von Access Db sind –

+5

diese ersetzen '‚WHERE' mit '‘ WHERE'; Ich meine, du brauchst hier einen Platz. – itzmukeshy7

+0

sollten Sie wirklich die Parameter verwenden – juharr

Antwort

0

Hier ist, wie Sie Ihre Abfrage einrahmen sollten. es ist auch eine gute Praxis, um Ihre oledbCommand innen zu wickeln Anweisung

con.Open(); 
    using (OleDbCommand cmd = con.CreateCommand()) 
    { 
    cmd.CommandText="UPDATE userdata 
        SET full_name= @full_name, user_type= @user_type, 
         gender= @gender,password= @password, tel_number= @tel_number, 
         blood_type= @blood_type Where user_id= @user_id; 


     // add named parameters 
     cmd.Parameters.AddRange(new OleDbParameter[] 
     { 
      new OleDbParameter("@user_type", user_type), 
      new OleDbParameter("@gender", gender), 
      new OleDbParameter("@password", password), 
      ... 
     }; 

     // execute 
     cmd.ExecuteNonQuery(); 

    } 
0
SQL.... 'WHERE user_id='" 

Versuchen Sie es zu ' WHERE user_id='"

Hinweis gibt es einen Raum dort zu ändern.