Подключение OLEDB к базе данных Access (accdb)

Я хочу сделать простое приложение для упражнения, поэтому было бы неплохо подключиться к простой базе данных, такой как Access (.accdb)

Моя программа выглядит так:

using System;
using System.Collections.Generic; 
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Web;

namespace myProject.Account
{
    public class DbManager
    {
       private OleDbConnection _dbConnection;

       public void OpenDbConnection()
       {
        _dbConnection = new OleDbConnection {ConnectionString = GetConnectionString()};
       }

       private string GetConnectionString()
       {
        return "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=exercise1.accdb";
       }

       public void CloseDbConnection()
       {
        _dbConnection.Close();
       }

       public void GetUser()
       {
        DataSet myDataSet = new DataSet();
        var myAdapptor = new OleDbDataAdapter();
        OleDbCommand command = new OleDbCommand("SELECT * FROM tblUser", _dbConnection);
        myAdapptor.SelectCommand = command;
        myAdapptor.Fill(myDataSet, "tblUser");
       } 

    }
  }

Я использую Visual Studio 2010. Когда я тестирую свое приложение, используя встроенный режим отладки «Начать без отладки» (CTRL+F5), я получаю эту ошибку:

Поставщик «Microsoft.ACE.OLEDB.14.0» не зарегистрирован на локальном компьютере.

Я попытался загрузить и установить «Распространяемый компонент Microsoft Access Database Engine 2010» (64-разрядная версия) с домашней страницы Microsoft: http://www.microsoft.com/download/en/details.aspx?id=13255

К сожалению, это не решило проблему. Я все еще получаю ошибку при выполнении myAdapptor.Fill(). Что не так?


person Jedi    schedule 28.11.2011    source источник
comment
какая разрядность у вашей операционной системы? Если ОС 32-разрядная, 64-разрядная не будет работать и наоборот, и они не будут установлены рядом.   -  person MatthewMartin    schedule 29.11.2011


Ответы (4)


Вам потребуется Access 2007 Runtime.

person Tom Bass    schedule 28.11.2011
comment
Спасибо за ответ. Ваше решение также может помочь. Я понял это, загрузив драйвер системы Office 2007 с этого сайта: microsoft.com/download/en/ Я думаю, что предложенная вами среда выполнения Access 2007 будет выполнять ту же работу :-). - person Jedi; 30.11.2011
comment
Access 2007 Runtime предоставляет Microsoft.ACE.OLEDB.12.0. Если вы хотите использовать 14th, вам необходимо загрузить Access 2010 Runtime microsoft.com/en-us/download/details.aspx?id=10910 - person Anton Sivov; 13.11.2013

Для других, которые заинтересованы в моем решении, я выяснил, что Microsoft.ACE.OLEDB.14.0 не поддерживается для Access 2010. Вместо этого я использовал Microsoft.ACE.OLEDB.12.0.

Вы можете загрузить их «Драйвер системы Office 2007: компоненты подключения к данным» с этого сайта: Драйвер системы Office 2007: компоненты подключения к данным

person Jedi    schedule 30.11.2011
comment
Microsoft Access 2007 = ACE 12; Microsoft Access 2010 = ACE 14; Microsoft Access 2013 = ACE 15 - person Derek Johnson; 30.08.2013

Была аналогичная проблема, но в моем случае это был просто старый план mdb. Provider=Microsoft.Jet.OLEDB.4.0 делает свое дело, нет необходимости загружать дополнительные среды выполнения.

person Rob Sedgwick    schedule 05.05.2013

добавить с помощью библиотеки System.Data.OleDb.

теперь для connection string

OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Aishwar NIGAM\\Documents\\indianOil.accdb");
person Aishwar C Nigam    schedule 08.08.2014