1

我正在我的 C-Sharp 表单应用程序中编写以下代码,它给了我以下错误。

> Syntax error in INSERT INTO statement.


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

3 回答 3

3

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

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

请不要使用字符串连接来构建 sql 语句。这是一种非常糟糕的做法,它会导致其他语法错误(用户名或密码带单引号),或者最糟糕的是导致 sql 注入攻击。看看这里如果你有一个聪明和恶意的用户会发生什么

OleDbCommand cmd = new OleDbCommand("Insert into Info (username, [password]) Values (?,?)", conn);
cmd.Parameters.AddWithValue("@p1", username);
cmd.Parameters.AddWithValue("@p2", password);
cmd.ExecuteNonQuery();
于 2013-04-26T15:25:47.380 回答
2

你需要括号关闭password。这是一个保留字

OleDbCommand cmd = 
    new OleDbCommand("Insert into Info (username, [password]) Values ('" + username + "', '" + password + "')", conn);
于 2013-04-26T15:25:20.133 回答
1

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

于 2013-04-26T15:24:45.340 回答