Как распространять приложение, которое использует базу данных Microsoft Access
Я создал приложение, используя Microsoft Access в качестве базы данных.
Когда я распространяю его, я получаю сообщение об ошибке:
"ACE.OLEDB.12.0" провайдер не зарегистрирован на локальном компьютере "
После поиска я нашел стандартное исправление, устанавливающее оба
2007 Система Office Driver: компоненты подключения к данным и Microsoft Access Database Engine 2010 распространять
При установке исправления ошибка меняется на нераспознанную базу данных. Я обнаружил еще одно исправление, в котором говорилось, что в качестве соединения для передачи данных используется Jet 4, которое при создании быстрого приложения (в качестве теста) выдает ту же ошибку.
Так кто-нибудь знает способ создания приложения, которое использует базу данных, которую легче распространять.
1 ответ
Microsoft Access Database Engine 2010 (ACE) выпускается в двух версиях. 32 бит и 64 бит. Вы не можете установить обе версии на одном компьютере. 32-битная версия может быть установлена на ПК с 64-битной ОС. Office 64/32 устанавливает ACE с той же разрядностью.
Это сценарий, который вы можете найти на компьютере ваших клиентов. Теперь ваше приложение должно адаптироваться к этому сценарию и использовать TargetCPU
свойство, которое позволяет вам соответствовать большинству ваших клиентов (я предполагаю, что вы не можете сказать своему пользователю, чтобы деинсталлировать его копию Office, чтобы приспособиться к требованиям вашего приложения)
Если у вашего клиента установлена 64-битная ОС и 64-битная версия Office, то у вас есть только одно решение. Создайте 64-битное приложение, используя TargetCPU = AnyCPU
без Prefer 32bit
или чистый x64
приложение. Любой другой вариант потерпит неудачу.
Вместо этого, если у вашего клиента не установлен ни Office, ни 32-битная версия (независимо от разрядности ОС), вы можете настроить его среду на создание своего приложения с помощью TargetCPU=x86
или же AnyCPU with Prefer 32bit
вариант. Конечно, если Office не установлен, вам нужно распространять 32-битную версию ACE.
Другие варианты базы данных для рассмотрения являются SQLite
, MS Sql Server Compact Edition
или же SQL Server LocalDB
вариант. В любом случае вам нужно распространять соответствующие библиотеки, чтобы ваше приложение могло использовать эти системы баз данных.
Для лучшей совместимости с уже написанным кодом вам, вероятно, следует выбрать одно из решений Microsoft, но если приложение невелико (с точки зрения доступа к данным), вы можете с уверенностью исследовать путь SQLite.