2

http://sites.google.com/site/dbxfirebird/から Firebird DBX ドライバーをダウンロードし、「Test Connection」プロジェクトをコンパイルして実行することができました。次のようにテストDBに向けました:

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 の呼び出しは次のように失敗します。

プロジェクト Project1.exe で例外クラス TDBXError が発生し、「不明なドライバー: FirebirdConnection」というメッセージが表示されました。

繰り返しますが、これは Open の呼び出しにあります。DriverName への割り当ては問題なく機能します。誰もこの問題を見たことがありますか?テストプロジェクトではまったく同じコードが機能するのに、別のプロジェクトでは機能しないのはなぜですか?それを修正する方法はありますか?

4

3 に答える 3

4

問題が見つかりました。DBXDynalink.pasの初期化セクションに、データベース ドライバーをセットアップするためのロード クラスを登録する必要がありました。テスト プロジェクトでは、 uses句にDBXDynalink が含まれていましたが、私の場合は含まれていませんでした。私はそれを入れて、今は動作します。

于 2009-12-24T22:04:29.440 に答える
0

C.DriverName := 'FirebirdConnection'; を変更するだけです。C.DriverName へ:= '火の鳥';

そしてうまくいきます!

于 2013-03-05T18:51:04.020 に答える