C# 更新SQL语法错误

C# 更新SQL语法错误,c#,C#,我正在创建一个程序,它需要更新ACCESS数据库中的用户数据。 在运行代码时,我发现上面的错误。我的更新声明是 con.Open(); string update = "UPDATE userdata SET full_name='"+name+ "', user_type ='" + user_type + "', gender = '" + gender + "', password='"+pas

我正在创建一个程序,它需要更新ACCESS数据库中的用户数据。 在运行代码时,我发现上面的错误。我的更新声明是

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

  }