连接到D2010上嵌入的Firebird

时间:2009-12-24 20:56:34

标签: 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引发异常   类TDBXError,消息'未知   driver:FirebirdConnection'。

同样,这是对Open的调用。对DriverName的赋值工作得很好。以前有人见过这个问题吗?为什么完全相同的代码在测试项目中工作但不是一个不同的代码,是否有任何方法可以解决它?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

改变 C.DriverName:='FirebirdConnection'; 至 C.DriverName:='Firebird';

并且会起作用!