Не удается получить доступ к защищенной паролем базе данных Microsoft accdb Microsoft.ACE.OLEDB.12.0
Windows 10 ноутбук x64 бит
У меня есть Microsoft Access 2010
Установленные драйверы:
Microsoft Office Access Database Engine 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 ответ
Обнаружено решение Проблема из того, что я исследовал, кажется, проблемы совместимости / конфликта между 32-битными /64-битными драйверами базы данных Microsoft
(Для справки у меня есть: Microsoft Access 2010, 64-разрядная версия Microsoft Office Access Database Engine 2007 (32-разрядный драйвер), Microsoft Access Database Engine 2010 (64-разрядная версия))
Со стороны водителя, не уверен, что мне нужны оба. Но водитель 2007 года был ОБЯЗАН для меня
Теперь для разрешения:
В Visual Studio мне просто нужно щелкнуть правой кнопкой мыши по проекту, а в разделе сборки я просто выбираю "Любой процессор" в качестве цели платформы (не то же самое, что выбрать Любой процессор для отладки / выпуска)