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

07-24 09:47