2016-04-19 2 views
3

Добрый день!Ошибка синтаксиса MySQL ASP.NET

Я пытаюсь выяснить, какая у меня ошибка. Это ошибка:

enter image description here

И вот мой код:

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(); 

} 

Я не могу заставить его работать. Я что-то упустил?

Любая помощь будет высоко оценена.

+1

Похоже, что вы что-то пропустили - как одна одиночная цитата. – mustaccio

ответ

4

В сообщении об ошибке указано, что в вашем запросе есть синтаксические ошибки, поэтому другие части (соединение) работают нормально, как и ожидалось. Теперь рассмотрим запрос: - при отладке программы и смотреть query вы можете увидеть, что он может выглядеть так:

UPDATE user SET username = 'asd WHERE user_id= usr_123 

Так что здесь не так, вы Ware пропустили ' после asd, необходимо дать пара ', чтобы указать user_id (если это строка), поэтому запрос может выглядеть следующим образом:

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

Но я настоятельно рекомендую вам использовать параметризованные запросы вместо этого для этого, чтобы избежать injection. Параметрированный запрос будет выглядеть так:

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

Ничего себе, спасибо за это. – FewFlyBy

Смежные вопросы