OleDb 连接到 Access 数据库

OleDb connection to an Access database

我一直在尝试写入数据库并保存到文件,但我无法让它工作,也不知道为什么。

我得到的错误是:

Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll

附加信息:

Could not find installable ISAM.

这是我的代码 运行,任何 help/advice 将不胜感激

    private void BtnSubmit_Click(object sender, EventArgs e)
    {
        OleDbConnection Conn = new OleDbConnection();
        Conn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =| DataDirectory |\HoliPlanData.accdb; Trusted_Connection = True;";

        String PayrollNo = TxtPayroll.Text;
        String FirstName = TxtFirstName.Text;
        String LastName = TxtLastName.Text;            
        String AnnualHolidayEntitlemet = TxtAHE.Text;
        String DaysTakenToDate = TxtDTTD.Text;

        OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate");
        Query.Connection = Conn;

        Conn.Open(); //THIS IS WHERE THE ERROR OCCURS IN CODEPROSSESS

        if (Conn.State == ConnectionState.Open)
        {
            Query.Parameters.Add("@PayrollNo", OleDbType.VarChar).Value = PayrollNo;
            Query.Parameters.Add("@FirstName", OleDbType.VarChar).Value = FirstName;
            Query.Parameters.Add("@LastName", OleDbType.VarChar).Value = LastName;
            Query.Parameters.Add("@AnnualHolidayEntitlement", OleDbType.VarChar).Value = AnnualHolidayEntitlemet;
            Query.Parameters.Add("@DaysTakenToDate", OleDbType.VarChar).Value = DaysTakenToDate;

            try
            {
                Query.ExecuteNonQuery();
                MessageBox.Show("Data Added Successfully");
                Conn.Close();                    
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message);
                Conn.Close();
            }
        }
        else
        {
            MessageBox.Show("Connection Failed");
        }
    }

安装 AccessDatabaseEngine 并重试。

如下更改连接字符串。

Conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\HoliPlanData.accdb;Trusted_Connection = True;";

两个问题:

  1. 正如您在上面的评论中指出的那样,您的连接字符串多了一个分号
  2. 您的 INSERT 查询缺少最后一个括号 )

比较这些行:

OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate");
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate)");