2015-01-10 2 views
0

Я пытаюсь подключиться к файлу mdb с C# 2013, используя OdbcConnection. Раньше у меня был Office 2000 на моих машинах Windows 7 и Windows 8, но я обновился до Office 2013 на обоих, и теперь он работает более долго. Моя база данных по-прежнему находится в формате mdb.Подключение к файлу mdb с использованием OdbcConnection в VS2013

Вот код:

const string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Path\Mydb.mdb"; 
OdbcConnection connRL = new OdbcConnection(); 
connRL.Open(); 

Все, что я пытался, я получаю следующее сообщение об ошибке:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Я установил "Microsoft Access Database Engine 2010 Redistributable" и «2007 системы Microsoft Office Драйвер: Компоненты подключения к данным ", но ни один из них не имеет никакого значения. Я могу создать новый источник данных из меню проекта VS 2013, и все это работает во время разработки.

Когда я создаю пустой файл udl и дважды щелкаю по нему, и перейдите на вкладку провайдера, ничего не говорится о Access или Jet, но я вижу поставщиков в реестре по адресу HKEY_CURRENT_USER \ Software \ Microsoft \ VWDExpress \ 12.0_Config \ DataProviders. Почему они не там?

Что еще я могу сделать, чтобы это сработало? Я пробовал все, что мог придумать.

+2

Используйте 'OleDbConnection' вместо этого. –

+0

Я думал, что должен, должен прочитать мой собственный код! –

+1

Найти разницу «OleDbConnection vs OdbcConnection». –

ответ

1

Я предполагаю, что вы не можете подключиться к mdb через OdbcConnection. В любом случае, чтобы подключиться к БД, вы должны указать строку соединения в объекте подключения, которая не указана в вашем коде.

Чтобы получить доступ к mdb используйте следующий код:

const string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Path\Mydb.mdb"; 
using(var connRL = new OleDbConnection(myConnectionString)) 
{ 
    //use your connection 
} 
+0

Да, я работал, я не понимал, что использовал OdbcConnection. Мне также пришлось переключиться на 32-разрядный, чтобы использовать OleDbConnection. –