INSERT INTO语句中的语法错误

时间:2013-04-26 15:23:24

标签: c# database ms-access insert syntax-error

我在C-Sharp Form Application中编写以下代码,它给出了以下错误。

> Syntax error in INSERT INTO statement.


OleDbCommand cmd =
    new OleDbCommand(
            "Insert into Info (username, password) Values ('"
          + username
          + "', '" 
          + password 
          + "')"
        , conn
    );

3 个答案:

答案 0 :(得分:3)

PASSWORD一词是保留的关键字。 要使用它,您应该将字符串括在方括号

OleDbCommand cmd = new OleDbCommand("Insert into Info (username, [password]) Values ('" + username + "', '" + password + "')", conn);

请,请不要使用字符串连接来构建sql语句。这是一个非常糟糕的做法,导致其他语法错误(带有单引号的用户名或密码)或最差的SQL注入攻击。如果您有智能和恶意用户,请look here采取可能发生的情况

OleDbCommand cmd = new OleDbCommand("Insert into Info (username, [password]) Values (?,?)", conn);
cmd.Parameters.AddWithValue("@p1", username);
cmd.Parameters.AddWithValue("@p2", password);
cmd.ExecuteNonQuery();

答案 1 :(得分:2)

您需要将password括起来。这是一个reserved word

OleDbCommand cmd = 
    new OleDbCommand("Insert into Info (username, [password]) Values ('" + username + "', '" + password + "')", conn);

答案 2 :(得分:1)

在用户名或密码变量中可能存在非法字符(例如单引号)。确保它们已经消毒。