D2010 に組み込まれた Firebird に接続する
-
21-09-2019 - |
質問
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 が含まれていました。 用途 私の場合はそうではありませんでした。それを入れたところ、動作するようになりました。
他のヒント
このエラーは、一般的に発生します。ご使用のリストにDBXFirebirdを追加してみてください。
ジャスト変更 C.DriverName:= 'FirebirdConnection'; に C.DriverName:= '火の鳥';
と動作します!