2016-04-19 16 views
3

Guten Tag!MySQL Syntax Fehler ASP.NET

Ich versuche herauszufinden, welchen Fehler ich habe. Dies ist der Fehler:

enter image description here

Und hier ist mein Code:

protected void accountGridView_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    accountGridView.EditIndex = e.NewEditIndex; 
    BindData(); 
} 
protected void accountGridView_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    int user_id = int.Parse(accountGridView.DataKeys[e.RowIndex].Value.ToString()); 
    TextBox txtUsername = (TextBox)accountGridView.Rows[e.RowIndex].FindControl("txtUsername"); 

    UpdateUser(user_id, txtUsername.Text); 
    accountGridView.EditIndex = -1; 
    BindData(); 
} 

private void UpdateUser(int user_id, string username) 
{ 
    GlobalVars cn = new GlobalVars(); 
    MySqlConnection connection = cn.connectDB(); 
    connection.Open(); 

    string query = "UPDATE user SET username = '" + username + " WHERE user_id = " + user_id + ""; 
    MySqlCommand com = new MySqlCommand(query, connection); 

    com.ExecuteNonQuery(); 
    connection.Close(); 

} 

Ich kann es nicht bekommen zu arbeiten. Fehle ich hier etwas?

Jede Hilfe würde sehr geschätzt werden.

+1

Sieht so aus, als ob Sie _etwas_ verpassen - wie ein einziges einfaches Zitat. – mustaccio

Antwort

4

Die Fehlermeldung besagt, dass Sie Syntaxfehler in Ihrer Abfrage haben, so dass die anderen Teile (Verbindung) wie erwartet funktionieren. Betrachten wir nun die Abfrage - wenn Sie das Programm debuggen und beobachten die query Sie können sehen, dass es kann aussehen wie:

UPDATE user SET username = 'asd WHERE user_id= usr_123 

Also, was falsch ist, ist hier, Sie ware eine verpasste ' nach asd, müssen eine geben Paar ' zu spezifizieren die user_id (wenn es ein String), so kann die Abfrage sieht wie folgt aus:

string query = "UPDATE user SET username = '" + username + "' WHERE user_id = '" + user_id + "'"; 

Aber ich empfehle Sie parametrisierte Abfragen stattdessen dafür verwenden injection zu vermeiden. Die parametrisierte Abfrage sieht wie folgt aus:

string query = "UPDATE user SET username = @username WHERE user_id = @user_id"; 
MySqlCommand com = new MySqlCommand(query, connection); 
com.Parameters.Add("@username", MySqlDbType.VarChar).Value = username; 
com.Parameters.Add("@user_id", MySqlDbType.VarChar).Value = user_id; 
// execute query here 
+0

Wow, danke dafür. – FewFlyBy