“关键字'WHERE'附近的语法不正确”例外

时间:2012-08-20 12:45:22

标签: c# sql sql-server

  SqlCommand cmd1 = new SqlCommand("INSERT INTO Userinformation(Access)
          VALUES("+nameAccess.Text+") WHERE User_ID='"+userIdaccess.Text+"'",con);
  SqlDataReader dr = cmd1.ExecuteReader();
  if (dr.Read())
  {
    MessageBox.Show("User Access Blocked");
  }
  dr.Close();

如下所示:

“关键字'WHERE'附近的语法不正确”

4 个答案:

答案 0 :(得分:5)

使用参数化查询来避免SQL注入,并确保对查询进行正确编码,并将IDisposable资源包装在using statements中,以避免泄漏非托管句柄。 INSERT SQL语句也没有WHERE子句:

using (SqlCommand cmd1 = new SqlCommand("INSERT INTO Userinformation(Access) VALUES(@NameAccess)", con))
{
    cmd1.Parameters.AddWithValue("@NameAccess", nameAccess.Text);

    using (SqlDataReader dr = cmd1.ExecuteReader())
    {
        if (dr.Read())
        {
            MessageBox.Show("User Access Blocked");
        }
    }
}

每次在构建SQL查询时都使用+运算符,做错了

答案 1 :(得分:1)

你无法做INSERT .. VALUES... WHERE,这就是原因。这是无效的语法。

插入语法:http://msdn.microsoft.com/en-us/library/ms174335.aspx

答案 2 :(得分:1)

INSERT INTO没有WHERE子句。您可以执行UPDATE ... WHERE您的子句被满足,或者将用户信息和用户ID作为新行插入。

答案 3 :(得分:-1)

试试这段代码:

SqlCommand cmd1 = new SqlCommand("INSERT INTO Userinformation(Access)
                                   VALUES('"+nameAccess.Text+"')",con);
SqlDataReader dr = cmd1.ExecuteReader();
if (dr.Read())
{
   MessageBox.Show("User Access Blocked");
}
dr.Close();

插入查询没有where clause