Mr. Slow Ответов: 2

Как мне подключиться к accdb, когда я получаю сообщение об ошибке: microsoft. АС. Oledb для. 12.0 провайдер не зарегистрирован на локальном компьютере


У меня есть приложение .net в 2.0 framework, с пользовательским управлением также в том же фреймворке. Я исследовал эту проблему, и мне кажется, что я пытаюсь прочитать 64-битную accdb с помощью 32-битного приложения.

Что я уже пробовал:

Я попытался установить 32-разрядную версию ms AccessDatabaseEngine безрезультатно, как это было предложено в нескольких статьях. Я предпочитаю держать это приложение в такте и хотел бы попробовать, как альтернативные предложения там, включить внепроцессный Com-сервер. Поскольку я довольно новичок в этом деле, мне нужна помощь. Я не знаю достаточно об этом и не могу найти ничего полезного нигде, кроме как сказать мне, что это то, что мне нужно.

2 Ответов

Рейтинг:
1

Maciej Los

Следуйте инструкциям от: Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере - ConnectionStrings.com[^]

Цитата:
Существует несколько причин, по которым это сообщение появляется в вашем приложении или на веб-сайте. В этой статье мы попытаемся прояснить каждую конкретную ситуацию

64-разрядная версия Windows и Office

В 64-разрядных средах Windows и 64-разрядных средах Office (2010, 2013) существует множество отчетов об этой ошибке. Исправление или обходной путь немного странны, но, похоже, работают для большинства людей там.

То "Распространяемый Компонент Microsoft Access Database Engine 2010[^]" установочный пакет кажется естественным для использования, но в нескольких отчетах говорится, что он не работает.

Вместо этого, используя "Драйвер Системы Office 2007: Компоненты Подключения К Данным[^]" кажется, решает вышеупомянутую проблему для большинства людей.

Компоненты Excel или Office не установлены локально

Отсутствующие компоненты могут быть установлены локально, и они поставляются как в 32 -, так и в 64-разрядных версиях. Распространяемый пакет Microsoft Access Database Engine 2016 можно загрузить здесь[^].


Короче говоря: вам нужно скачать и установить MS Access database engine 2010 (или выше) распространяемый для 64-битной машины!
Обратите внимание, что есть небольшие различия в доступе к данным blob-объектов в 64-битной версии.

Я бы посоветовал также прочитать эти статьи:
Установка поставщика Microsoft.ACE.OLEDB.12.0 как для 64-разрядной, так и для 32-разрядной обработки – Data Savvy[^]
32bit 64bit - MS Access DB Engine (32-bit) с Office 64-bit - Stack Overflow[^]


Рейтинг:
0

Dave Kreskowiak

Вы не можете смешивать 64-битный и 32-битный код в одном процессе. То, что вы можете иметь, - это ваш код, скомпилированный для таргетинга "любого процессора". В этом случае на 64-разрядной машине ваш код выполняется как 64-разрядный, а версия Office или установленная среда выполнения Access-32-разрядная. Вы не можете совместить то и другое.

Вы должны скомпилировать свой проект для целевой x86 (32-разрядной версии), и он будет отлично работать с 32-разрядной средой выполнения Access.

Перейдите на вкладку Project -> Properties -> Build, и вы найдете ее.


Maciej Los

5ed!

Mr. Slow

Это, безусловно, лучшее решение этой проблемы, которое я нашел. Не то чтобы я мало чему не научился из других статей. Они очень информативны о причине, но не имеют решения. Спасибо.