Как распространять приложение, которое использует базу данных 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.

Другие вопросы по тегам