SQL命令语法错误信息:System.Data.SqlClient.SqlException: '附近有语法错误', ''
问题描述:
我建立的销售体系在C#中的点,我从接口传递的数据通过一个对象数据库。SQL命令语法错误信息:System.Data.SqlClient.SqlException: '附近有语法错误', ''
更新功能,每次我尝试更新时间抛出一个语法错误cmd.CommandText。
private void btnUpdate_Click(object sender, EventArgs e) //UPDATE FUNCTION//
{
user_management_system user_mgnt = new user_management_system();
user_mgnt.Username = txt_userName.Text;
user_mgnt.Password = txt_password.Text;
user_mgnt.First_name = txt_firstName.Text;
user_mgnt.Last_name = txt_lastName.Text;
user_mgnt.Nationality = txt_nationality.Text;
user_mgnt.Email = txt_email.Text;
user_mgnt.Age = (txt_age.Text);
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE userlogin SET password = ('"+ user_mgnt.Password + "',first_name='" + user_mgnt.First_name + "',last_name='" + user_mgnt.Last_name + "',age='" + user_mgnt.Age +
"',nationality='" + user_mgnt.Nationality + "',email='" + user_mgnt.Email + "', WHERE username ='"+ user_mgnt.Username+ "')";
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Data has been successfuly updated");
displaydata();
答
您的WHERE
条款之前有一个额外的(放错地方)逗号。它应该是:
cmd.CommandText = "UPDATE userlogin SET password = ('"+ user_mgnt.Password + "',first_name='" + user_mgnt.First_name + "',last_name='" + user_mgnt.Last_name + "',age='" + user_mgnt.Age +
"',nationality='" + user_mgnt.Nationality + "',email='" + user_mgnt.Email + "' WHERE username ='"+ user_mgnt.Username+ "')";
编辑:我将与那些评论,你应该使用参数化SQL同意,还可以避免存储在数据库明文密码。
如果不使用参数,你将会有不好的时候。 SQL注入,格式错误等。 – LarsTech
首先要做的就是停止构建SQL。总是使用参数化的SQL。除了其他任何东西,它都会让你更容易看到你实际使用的SQL。 (然后就是删除SQL注入攻击。)接下来,它看起来像是以纯文本形式存储密码 - 我强烈建议您也不要那么做。 –