delphi - 连接到 D2010 上嵌入的 Firebird

标签 delphi firebird firebird-embedded

我从 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 raised exception class TDBXError with message 'Unknown driver: FirebirdConnection'.

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

最佳答案

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

关于delphi - 连接到 D2010 上嵌入的 Firebird,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959741/

相关文章:

delphi - 如何反序列化没有内置转换器的属性?

delphi - 减少Delphi安装尺寸

delphi - 如何在不使用存储过程的情况下使用 dbExpress 框架更改生成器值?

database - 为 Delphi 应用程序选择数据库和许可

firebird - Firebird 数据库文件是否与 Firebird Embedded 数据库兼容

delphi - 如何检测编译exe的Delphi编译器版本?

database - 即使关闭后也无法恢复数据库备份 ("database might be in use")

java - Firebird JDBC 驱动程序连接字符编码

database - 通过嵌入式 dll 从多个应用程序连接到一个 firebird 数据库

delphi - delphi中如何反序列化子属性?