Проблема подключения между Visual Basi c. NET и базой данных Access - PullRequest
1 голос
/ 16 июня 2020

У меня проблема. существует проблема соединения между Visual Basi c. NET и базой данных Access.

В первом сценарии тип файла доступа, который я использовал, был .accdb . Когда я пытался связать соединение между Access и. Net, появилось окно сообщения, показывающее, что я не установил движок Access ( Но Я СДЕЛАНО ). fyi, я установил версию x64.

Во втором сценарии тип файла доступа, который я использовал, был .mdb . Однако в этой попытке соединение было успешным.

Итак ... может кто-нибудь вкратце объяснить это, это обычная проблема с моим компьютером, или я установил неправильную версию механизма доступа? Ваша помощь очень ценится, спасибо.

1 Ответ

0 голосов
/ 16 июня 2020

Jet доступен только в 32-битном формате, поэтому, если это сработало, ваше приложение должно быть 32-битным. Это объясняет, почему 64-разрядная версия ACE не работает с файлом ACCDB. Это означает, что для использования ACE вам либо нужна 32-разрядная версия, либо ваше приложение должно быть 64-разрядным.

Обычно рекомендуется устанавливать 32-разрядную версию ACE, если только вам не требуется 64-разрядная версия. . Это потому, что Office обычно 32-битный (это то, что рекомендует Microsoft, хотя 64-битная версия доступна, если вам нужны определенные c преимущества), а приложения VS по умолчанию 32-битные (любой ЦП, предпочитайте 32-битную версию).

Если ваш проект нацелен на платформу x86, он всегда будет 32-битным и не будет работать в системах, которые не поддерживают 32-битную версию. Если ваш проект нацелен на платформу x64, он всегда будет 64-разрядным и не будет работать в системах, которые не поддерживают 64-разрядную версию. Если ваш проект нацелен на Any CPU и Prefer 32-bit отмечен, то он будет 32-битным, если это возможно, иначе он будет 64-битным. Если ваш проект нацелен на Any CPU и Prefer 32-bit НЕ отмечен, то он будет 64-битным, если это возможно, иначе он будет 32-битным.

РЕДАКТИРОВАТЬ:

Для тех, кто этого не понимает, предполагая, что вы используете 64-разрядную Windows для Intel / AMD, попробуйте следующее:

  1. Создайте новый проект консольного приложения VB.
  2. Добавьте следующий код:
Module Module1

    Sub Main()
        Console.WriteLine(If(Environment.Is64BitProcess, "64-bit", "32-bit"))
        Console.ReadLine()
    End Sub

End Module
Открыть страницу Compile свойств проекта. Установите Целевой ЦП на x86 и запустите проект. Установите Целевой ЦП от до Любой ЦП , установите флажок Предпочитать 32-разрядный и запустите проект. Установите Целевой ЦП на Любой ЦП , снимите флажок Предпочитать 32-разрядный и запустите проект. Установите Целевой ЦП на x64 и запустите проект.

Вы увидите, что в первых двух случаях отображается «32-разрядный», а в последних двух случаях отображается «64-разрядный», в точности как я объяснил выше.

Обратите внимание, что для свойства Is64BitProcess требуется как минимум. NET Framework 4.0 или. NET Core 2.0.

...