C#Oledb 0x80040E14 INSERT INTO错误

时间:2014-01-03 14:02:58

标签: c# insert oledb

我正在开发一个项目,您可以使用INSERT INTO命令和Acces数据库(OleDB)将用户添加到数据库。

我遇到0x80040E14错误,似乎无法解决。 代码如下:

public void AddUser()
{
    OleDbConnection DATABASE_CONNECTION = new OleDbConnection(CONNECTION_STRING);

    try
    {
        DATABASE_CONNECTION.Open();
        String SQL_QUERY = "INSERT INTO Users(Username, Password, Voornaam, Tussenvoegsel, Achternaam, Email, VolledigeNaam) VALUES(?, ?, ?, ?, ?, ?, ?)";
        OleDbCommand COMMAND = new OleDbCommand(SQL_QUERY, DATABASE_CONNECTION);

        COMMAND.Parameters.AddWithValue("Username", OleDbType.Char).Value = Username;
        COMMAND.Parameters.AddWithValue("Password", OleDbType.Char).Value = Password;
        COMMAND.Parameters.AddWithValue("Voornaam", OleDbType.Char).Value = Voornaam;
        COMMAND.Parameters.AddWithValue("Tussenvoegsel", OleDbType.Char).Value = Tussenvoegsel;
        COMMAND.Parameters.AddWithValue("Achternaam", OleDbType.Char).Value = Achternaam;
        COMMAND.Parameters.AddWithValue("Email", OleDbType.Char).Value = Email;
        COMMAND.Parameters.AddWithValue("VolledigeNaam", OleDbType.Char).Value = VolledigeNaam;

        int rows = COMMAND.ExecuteNonQuery();
        DATABASE_CONNECTION.Close();

        if (rows > 0)
        {
            MessageBox.Show("User added");
        }
        else
        {
            MessageBox.Show("FAIL");
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.ToString());
    }
}

1 个答案:

答案 0 :(得分:3)

密码是MSAccess中的reserved keyword。要使用它,您需要将其括在方括号

   String SQL_QUERY = "INSERT INTO Users(Username, [Password], Voornaam, Tussenvoegsel, " + 
                      "Achternaam, Email, VolledigeNaam) VALUES(?, ?, ?, ?, ?, ?, ?)";

但是,如果仍然可以,请更改列名,因为这个问题会非常烦人。

您的代码中还有其他错误。

方法AddWithValue需要OleDbParameter的值作为第二个参数,而不是类型。

  COMMAND.Parameters.AddWithValue("Username", Username);
  ....