Ошибка соединения при соединении с базой данных MS Access - PullRequest
2 голосов
/ 02 февраля 2011

Я хочу подключиться к базе данных ms access в c # через ado.net в Windows Server 2008 R2 стандарт.

using System.Data.OleDb;

OleDbConnection connectionAccess = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\testTable.mdb");
OleDbDataAdapter adapterAccess = new OleDbDataAdapter("Select * from test", connectionAccess);
DataSet ds = new DataSet();
adapterAccess.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

Но выдает ошибку:

The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.

ЕстьЛюбое предложение и почему эта ошибка.Если не зарегистрировано то как это зарегистрировать.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Возможно, проблема в платформе.Jet OLEDB поддерживает только x86 (32-битная ОС), а не x64 64 (бит).Существует не 64-битная версия джета, поэтому вы получаете эту ошибку.

Чтобы заставить ваше приложение использовать 32-разрядную версию, измените целевой процессор на x86 в дополнительных параметрах компилятора в Visual Studio.

Этот аналогичный вопрос для MSDN может помочь.

Также попробуйте вручную зарегистрировать DLL.Для вашего Jet 4.0 путь dll:

Microsoft Jet 4.0 OLE DB Provider
Provider=Microsoft.Jet.OLEDB.4.0
C:\WINNT\System32\Msjetoledb40.dll
C:\WINNT\System32\Msjet40.dll
C:\WINNT\System32\Mswstr10.dll
C:\WINNT\System32\Msjter40.dll
C:\WINNT\System32\Msjint40.dll

зарегистрируйте dll, используя regsvr32, как это показано в командной строке:

regsvr32 C:\WINNT\System32\Msjetoledb40.dll
0 голосов
/ 02 февраля 2011

Это может быть связано с проблемой настройки безопасности пользователя Windows, проверкой прав на пути и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...