我在C-Sharp表单应用程序中编写以下代码,它给了我以下错误。
> Syntax error in INSERT INTO statement.
OleDbCommand cmd =
new OleDbCommand(
"Insert into Info (username, password) Values ('"
+ username
+ "', '"
+ password
+ "')"
, conn
);
最佳答案
密码一词是保留的关键字。
要使用它,您应该将字符串用方括号括起来
OleDbCommand cmd = new OleDbCommand("Insert into Info (username, [password]) Values ('" + username + "', '" + password + "')", conn);
而且,请不要使用字符串连接来构建sql语句。这是一种非常糟糕的做法,它会导致其他语法错误(用单引号引起的用户名或密码),或者导致最严重的sql注入(inject)攻击。如果您有一个聪明而恶意的用户,那会发生什么?
OleDbCommand cmd = new OleDbCommand("Insert into Info (username, [password]) Values (?,?)", conn);
cmd.Parameters.AddWithValue("@p1", username);
cmd.Parameters.AddWithValue("@p2", password);
cmd.ExecuteNonQuery();