Как использовать соединение ODBC с файлом Access .mdb в приложении .Net Core 3.0 - PullRequest
0 голосов
/ 16 октября 2019

У меня есть проект .Net Standard 2.0 с библиотекой классов, в которой я использую System.DataODBC (установленный как пакет Nuget) для подключения к файлу mdb Access.
Затем я написал консоль .Net Framework 4.7.2. приложение для тестирования библиотеки и работает как положено. Затем я написал консольное приложение .Net Core 3.0, потому что приложение, которое в конечном итоге будет использовать библиотеку, является приложением .Net Core. Но это не сработало. Я получаю эту ошибку:

ОШИБКА [IM002] [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

Но затем я попыталсяскомпилируйте решение с "x86" вместо "Any CPU" - и это работает. Затем я думаю, что он должен иметь какое-то отношение к драйверу ODBC для 32 из 64 бит?

Чтобы было ясно, я не настроил драйвер ODBC с администратором ODBC (odbcad32.exe). Теперь я могу запустить основное консольное приложение в Visual Studio и автономно.

Но когда я помещаю основное консольное приложение на другой компьютер (чистая установка Windows 10 pro в виртуальной машине), оно все равно не будет работать,Что мне нужно сделать / установить на машине ВМ, чтобы запустить ее?

Заранее спасибо

Андерс

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Если вы используете mdb (более старый устаревший механизм JET), то вы можете подключиться к любому компьютеру, поскольку копия базы данных JET поставляется с каждой копией окон. И ДА, вам придется принудительно настроить ваш проект на x32 (x86), поскольку ядро ​​данных JET доступно только в версиях x32.

Если вы используете ACE, то вы используете более новый механизм обработки данных ACE, который требуетсяесли вы используете Access 2007 и более поздние форматы (поэтому для файлов accDB вы ДОЛЖНЫ использовать ACE).

Конечно, как и любые драйверы или программное обеспечение, если вы собираетесь развернуть на дополнительные машины, то вы должны убедиться, что ACE установлен. Как правило, вы должны (должны) установить компоненты подключения доступа. например, этот:

https://www.microsoft.com/en-us/download/details.aspx?id=54920

Имейте в виду, что есть две версии выше. 64-разрядная версия и 32-разрядная версия. Вы хотите продолжить форсировать ваш .net проект в x32 или x64, так как вы не можете оставить этот выбор на ветер. Таким образом, вы должны включить вышеуказанную установку как часть вашего установщика, или просто предоставить копию, или попросить пользователей загрузить + установить.

Единственный способ устранить необходимость в вышеперечисленном - это использовать JET, ноэто не может быть возможным выбором для вас, и вы ограничены файлами mdb и не можете использовать файлы accDB с JET.

0 голосов
/ 17 октября 2019

Спасибо за быстрый ответ.

Но я обнаружил, что для запуска основного приложения .Net с использованием System.Data.ODBC необходимо скомпилировать приложение для процессора x86 и сервера, на котором установлено приложение. должна быть установлена ​​32-разрядная версия .Net Core.

...