Подключите ODBC без установленного драйвера - PullRequest
0 голосов
/ 22 февраля 2019

Возможно ли установить соединение ODBC без общесистемного драйвера?Могу ли я просто указать библиотеку DLL, содержащую драйвер?

Я использую ее на 32-битном C ++, в настоящее время тестирую на Windows, и подключаюсь к базе данных Firebird.Я попробовал следующую строку подключения, что не работает :

constexpr auto DatabaseConnection =
//"DRIVER=Firebird/InterBase(r) driver;" //this works when driver installed
"UID=SYSDBA;"
"PWD=masterkey;"
"DBNAME=C:\\some\\path\\to\\database\\DB.FDB;"
"Client=C:\\Windows\\System32\\OdbcFb.dll;";

Сообщение об ошибке: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Firebird ODBC Driver содержит небольшую статическую библиотеку (названную OdbcFb.lib), которая должна быть связана в приложении.Под капотом он, вероятно, предварительно загружает dll и каким-то образом регистрирует его как новый драйвер.Когда такая библиотека связана, строка подключения, которая работает:

"DRIVER=OdbcFb.dll;UID=SYSDBA;PWD=masterkey;DBNAME=127.0.0.1:C:\\path\\DB.GDB;";

Что меня удивило, когда вы опускаете DRIVER, он также работает, выбирая априорный драйвер с помощью некоторой магии:

"UID=SYSDBA;PWD=masterkey;DBNAME=127.0.0.1:C:\\path\\DB.GDB;";

Обратите внимание, что:

  • OdbcFb.dll должно быть видимым для вашего приложения (находиться в том же каталоге или в системной переменной PATH)
  • нужно помнить о выборе архитектуры библиотеки априоприетова именно 32-битный или 64-битный.
0 голосов
/ 22 февраля 2019

Да, соединение без DSN может быть установлено с незарегистрированным драйвером ODBC путем полного указания строки подключения.

Эта строка используется при правильной установке драйвера -

"DRIVER=Firebird/InterBase(r) driver;"

- что действительно должно быть, чтобы ссылаться на драйвер по имени -

"DRIVER={Firebird/InterBase(r) driver};"

- должно быть изменено на это -

"DRIVER=C:\\Windows\\System32\\OdbcFb.dll;"

ЭтоПохоже, что если %PATH% установлен неправильно (для включения каталога, содержащего odbcfb.dll) и / или если драйвер FB не зарегистрирован в диспетчере драйверов MDAC, необходимо включить ключевое слово client, специфичное для FBна odbcfb.dll, и в этом случае вам не нужно ссылаться на odbcfb.lib.

Вы можете воспользоваться собственной документацией водителя для создания DSN и для DNSlessсоединения ...

...