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'附近的语法不正确”
答案 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
,这就是原因。这是无效的语法。
答案 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