-4
  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

4 回答 4

5

使用参数化查询来避免 SQL 注入,并确保正确编码查询并将IDisposable资源包装在using 语句中以避免泄漏非托管句柄。此外,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 查询时使用运算符时,您都做错了

于 2012-08-20T12:47:35.540 回答
1

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

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

于 2012-08-20T12:51:23.793 回答
1

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

于 2012-08-20T12:51:55.557 回答
-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

于 2012-08-20T13:01:22.540 回答