質問

Firebird DBX ドライバーを次からダウンロードしました。 http://sites.google.com/site/dbxfirebird/ 「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 の呼び出しは次のように失敗します。

Project Project1.exeは、「不明なドライバー:メッセージを含む例外クラスTDBXERRORを提起しました:ファイアバード接続」。

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

役に立ちましたか?

解決

問題が見つかりました。データベースドライバーを設定するためのロードクラスは、 初期化 DBXDynalink.pas のセクション。テスト プロジェクトには、DBXDynalink が含まれていました。 用途 私の場合はそうではありませんでした。それを入れたところ、動作するようになりました。

他のヒント

あなたの用途リストにそれぞれのDBXドライバユニットを追加しないとき

このエラーは、一般的に発生します。ご使用のリストにDBXFirebirdを追加してみてください。

ジャスト変更 C.DriverName:= 'FirebirdConnection'; に C.DriverName:= '火の鳥';

と動作します!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top