Не удается получить доступ к защищенной паролем базе данных Microsoft accdb Microsoft.ACE.OLEDB.12.0 - PullRequest
0 голосов
/ 07 февраля 2019

Ноутбук с Windows 10 x64 бит

У меня установлен Microsoft Access 2010

Установлены драйверы:

-Движок базы данных Microsoft Office Access 2007 (я думаю, 32 бит)

-Microsoft Access Database Engine 2010 (я думаю, 64-битный)

Я недавно унаследовал проект C # (я думаю, .net 4.0) как младший, но у меня возникают проблемы с правильной настройкой кода и сТо, что я прочитал, связано с тем, что проект использует (защищенную паролем) базу данных Microsoft Access.Первоначально он был обработан одним основным разработчиком, а затем передан мне.

Установка драйвера Microsoft 2007 помогла с «проблемами с регистрацией», но я обнаружил, что программе не удалось получить доступ к базе данных.

При выполнении кода я получаю сообщение об ошибке ниже.

System.Data.OleDb.OleDbException: Не удается открыть базу данных ''.Это может быть не база данных, которую распознает ваше приложение, или файл может быть поврежден.

Я обнаружил, что если я открою Microsoft Access 2010, создаю пустую базу данных, импортирую все из исходной базы данных изатем сохраните без пароля, затем он появится , чтобы нормально работать.Но когда используется пароль, он перестает работать

Мой файл App.Config:

<add key ="exampletest"
     value ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test\testDB.accdb;" />

В моем файле accesshelper:

Public static readonly string ConnectionString = 
  ConfigurationManager.AppSettings["exampletest"].ToString() +
  "Jet OLEDB:Database Password=Abc1234;";

...

Using (OleDbConnection conn = new OleDbCommection(connectionString))
{
...
If (con.State !=ConnectionState.Open)
   conn.Open();
...
}

Код отлично работает с оригинальным разработчиком, но я не могу воспроизвести тот же успех без обходных путей, таких как удаление пароля (пароль в коде (Abc1234) правильный. Я знаю, потому что если яоткройте базу данных в Microsoft Access 2010; я должен ввести пароль)

1 Ответ

0 голосов
/ 10 февраля 2019

Обнаружено решение. Проблема из того, что я исследовал, - это проблемы совместимости / конфликта между 32-битными / 64-битными драйверами базы данных Microsoft

(Для справки у меня есть: Microsoft Access 2010 64-битная база данных Microsoft Office AccessEngine 2007 (32-разрядный драйвер) Microsoft Access Database Engine 2010 (64-разрядный драйвер))

На стороне водителя, не уверен, что мне нужны оба.Но драйвер 2007 года был ОБЯЗАН для меня

Теперь для разрешения:

В visual studio мне просто нужно щелкнуть правой кнопкой мыши по проекту и в разделе сборки я просто выбираю «Любой процессор»в качестве цели платформы (не то же самое, что выбрать Любой ЦП для отладки / выпуска

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