C# 更新SQL语法错误
我正在创建一个程序,它需要更新ACCESS数据库中的用户数据。 在运行代码时,我发现上面的错误。我的更新声明是C# 更新SQL语法错误,c#,C#,我正在创建一个程序,它需要更新ACCESS数据库中的用户数据。 在运行代码时,我发现上面的错误。我的更新声明是 con.Open(); string update = "UPDATE userdata SET full_name='"+name+ "', user_type ='" + user_type + "', gender = '" + gender + "', password='"+pas
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!");
尝试将其更改为“WHERE user_id=”
请注意,这里有一个空格。下面是您应该如何构建查询的框架。另外,最好将
oledbCommand
封装在using语句中
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();
}
顺便说一句,更新字段的访问顺序与数据库的访问顺序完全一致。请将此
'WHERE
替换为'WHERE
;这意味着您需要一个空格;您真的应该使用参数Hanks guys。是的,我添加了参数。原来“password”是ms Access中的保留字。更改为[password]对我来说很有效。
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();
}