簡體   English   中英

C#Oledb 0x80040E14插入錯誤

[英]C# Oledb 0x80040E14 INSERT INTO error

我正在做一個項目,您可以在其中使用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());
    }
}

密碼是MSAccess中的保留關鍵字 要使用它,您需要將其用方括號括起來

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

但是,如果仍然有可能,請更改列名稱,因為此問題將非常煩人。

您的代碼中還有另一個錯誤。

方法AddWithValue需要作為第二個參數的OleDbParameter的值,而不是類型。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM