C# 到Access数据库的OleDb连接

C# 到Access数据库的OleDb连接,c#,database,ms-access,connection-string,C#,Database,Ms Access,Connection String,我一直在尝试写入数据库并保存到文件,但我无法让它工作,也不知道为什么 我得到的错误是: Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll 其他信息: Could not find installable ISAM. 这是我正在运行的代码,任何帮助/建议都将不胜感激 private void BtnSubmit_Click(object sender, EventArgs e) {

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

我得到的错误是:

Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll
其他信息:

Could not find installable ISAM.
这是我正在运行的代码,任何帮助/建议都将不胜感激

    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");
        }
    }
请安装并重试

更改连接字符串,如下所示

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

安装并重试

更改连接字符串,如下所示

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

两个问题:

  • 正如您在上面的评论中指出的,您的连接字符串有一个额外的分号
  • 插入查询缺少最后一个括号)
  • 比较以下几行:

    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)");
    
    两个问题:

  • 正如您在上面的评论中指出的,您的连接字符串有一个额外的分号
  • 插入查询缺少最后一个括号)
  • 比较以下几行:

    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)");
    

    尝试了以上两种方法,仍然得到相同的错误。有人知道这个问题吗?尝试了以上两种方法,仍然得到相同的错误。有人知道这个问题吗?乔,你这个聪明人。非常感谢你。祝你有一个美好的一天!!乔,你这个聪明人。非常感谢你。祝你有一个美好的一天!!