2016-02-22 3 views
1

Я пытаюсь записать в базу данных и сохранить файл, но я не могу заставить его работать, и не могу понять, почему.Соединение OleDb с базой данных доступа

Ошибки я получаю:

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

ответ

0

Два вопроса:

  1. Ваша строка подключения имеет дополнительную точку с запятой, как вы указали в комментариях выше
  2. Добавленное запроса отсутствует последняя скобка)

Сравните эти строки:

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

Джо, ты блестящий человек. Огромное спасибо. Имейте блестящий день! – Josh

0

Установите AccessDatabaseEngine и повторите попытку.

Измените строку подключения, как показано ниже.

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

+0

Сделали, никаких изменений вообще, та же ошибка, тот же exe – Josh

+0

Пробовал оба из вышеперечисленного, все еще получая ту же ошибку. Кто-нибудь знает проблему? – Josh

Смежные вопросы