Подключение к Firebird, встроенному в D2010 - PullRequest
2 голосов
/ 24 декабря 2009

Я скачал драйвер Firebird DBX из http://sites.google.com/site/dbxfirebird/ и смог скомпилировать проект «Test Connection» и запустить его. Я указал на мою тестовую базу данных так:

procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection;
begin
  C := TSQLConnection.Create(Self);
  try
    C.DriverName := 'FirebirdConnection';
    C.Params.Add('User_Name=SYSDBA');
    C.Params.Add('Password=masterkey');
    C.Params.Add('Database=C:\fbtest\test.fdb');
    C.Open;
    if C.Connected then
      ShowMessage('Connection is active')
  finally
    C.Free;
  end;
end;

Когда я запускаю, все работает нормально. Но когда я помещаю точно такой же код в другой проект, он не работает. Я скопировал fbclient.dll (DLL-файл встроенного драйвера Firebird, переименован в fbclient), все его зависимости и файл dbxdrivers.ini в ту же папку, в которой выполняется EXE-файл проекта. Я не вижу причин, почему это не должно работать, но вызов .Open завершается неудачно с:

Project Project1.exe поднял исключение Класс TDBXError с сообщением 'Unknown драйвер: FirebirdConnection '.

Опять же, это по вызову Open. Назначение DriverName работает просто отлично. Кто-нибудь видел эту проблему раньше? Почему в тестовом проекте работает точно такой же код, а не другой, и есть ли способ, как это исправить?

Ответы [ 3 ]

4 голосов
/ 25 декабря 2009

Я нашел проблему. Класс загрузки для установки драйвера базы данных должен был быть зарегистрирован в разделе initialization файла DBXDynalink.pas. Тестовый проект включил DBXDynalink в свое предложение , в котором используется , а в моем - нет. Я вставил это, и теперь это работает.

1 голос
/ 09 апреля 2012

Эта ошибка обычно возникает, когда вы не добавляете соответствующий блок драйвера DBX в свой список использования. Попробуйте добавить DBXFirebird в свой список использования.

0 голосов
/ 05 марта 2013

Просто поменяй C.DriverName: = 'FirebirdConnection'; в C.DriverName: = 'Firebird';

и будет работать!

...