Как открыть соединение с базой данных Microsoft Access в C#

Я использую Microsoft Access для создания моей базы данных. Вот мой код:

static string Constr = "Provider=Microsoft.Jet.OLEDB.4.0;" 
                     + "Data Source = MyData.accdb";
OleDbConnection Conn = new OleDbConnection(Constr);
DataSet DataSet1 = new DataSet();
string SQLstr = "Select * from Tabel";
OleDbDataAdapter DataAdapter1;
Conn.Open();

Я получаю это исключение:

необработанное исключение типа System.Данные.Oledb для.OleDbException ' произошло в системе.Данные.dll файлы

дополнительная информация: нераспознаваемый формат базы данных

1 ответов


вы пытаетесь открыть базу данных Access, созданную с Access 2007/2010 (accdb) с поставщиком OleDb, который может понимать только файлы MDB, созданные с Access 2003

провайдер использовать Microsoft.ACE.OleDB.12.0 это должно быть уже установлено с последней версией Office.

в альтернативном варианте вы можете загрузить соответствующие биты из Microsoft Access Database Engine
Просто обратите внимание, чтобы загрузить версию, соответствующую платформа (x86 или x64), которую вы используете.

и это строка подключения для использования

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MyData.accdb";

Примечание: имейте в виду, что если у Вас установлен Office, соответствующий поставщик имеет ту же битность Office, поэтому с Office 64bit поставляется ACE в 64-битной версии и то же самое для 32bit. Этот сценарий создает очень сложную проблему при развертывании приложения. Вам нужно скомпилировать приложение с той же битностью, или вы не сможете использовать поставщика установленный. (Или отключите несовместимую версию Office и переустановите совместимую версию. Конечно, если вы должны быть в состоянии убедить своего клиента, что Office является несовместимым приложением : -)