2

我从http://sites.google.com/site/dbxfirebird/下载了 Firebird DBX 驱动程序,并且已经能够编译“测试连接”项目并让它运行。我将它指向我的测试数据库,如下所示:

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(Firebird 嵌入式驱动程序 DLL,重命名为 fbclient)、它的所有依赖项以及 dbxdrivers.ini 文件复制到与项目的 EXE 运行所在的文件夹相同的文件夹中。我看不出任何原因这不应该工作,但对 .Open 的调用失败:

Project Project1.exe 引发异常类 TDBXError,并带有消息“未知驱动程序:FirebirdConnection”。

同样,这是对 Open 的调用。对 DriverName 的分配工作得很好。有没有人见过这个问题?为什么完全相同的代码在测试项目中工作,但不是不同的,有什么办法可以修复它?

4

3 回答 3

4

我发现了问题。设置数据库驱动程序的加载类必须在 DBXDynalink.pas 的初始化部分中注册。测试项目在它的uses子句中包含了DBXDynalink ,而我的没有。我把它放进去,现在它可以工作了。

于 2009-12-24T22:04:29.440 回答
1

当您未将相应的 DBX 驱动程序单元添加到您的使用列表时,通常会发生此错误。尝试将 DBXFirebird 添加到您的使用列表中。

于 2012-04-09T17:24:35.273 回答
0

只需更改 C.DriverName := 'FirebirdConnection'; 到 C.DriverName := 'Firebird';

并且会工作!

于 2013-03-05T18:51:04.020 回答