2017-08-01 18 views
1

私のアプリケーションで永続的な接続定義を定義する必要がありますが、接続されているデータベースを変更する必要があります。FireDac永続接続が更新されない

だから私は定義を作成するには、このコードを使用:

OraCon: TFDConnection; 
oDef: IFDStanConnectionDef; 

.... 

OraCon.Connected := False; 
oDef := FDManager.ConnectionDefs.FindConnectionDef('MyConn'); 
if (oDef <> nil) then 
begin 
    FDManager.DeleteConnectionDef('MyConn'); 
end; 

oDef := FDManager.ConnectionDefs.AddConnectionDef; 
oDef.Params.Clear; 
oDef.Name := 'MyConn'; 
oDef.Params.Add('DriverId=Ora'); 
oDef.Params.Add('Database=' + edDB.Text); 
oDef.Params.Add('User_name=' + edUser.Text); 
oDef.Params.Add('Password=' + edPasswd.Text); 

oDef.MarkPersistent; 
oDef.Apply; 
OraCon.ConnectionDefName := 'MyConn'; 
OraCon.Connected := True; 

それは良い作品と正しくFireDac定義ファイルを更新します。 問題は、私のFDConnectionコンポーネントが新しいデータベースではなく、古いデータベースに接続し続けることです。

これを「リフレッシュ」するにはどうすればよいですか?

+0

新しい定義を設定して接続します。他には何もしないでください。それはあなたがしたことですか?私はマネージャーが変更を_listening_しているという事実に頼ることはありません。 – Victoria

+0

はい、私はこれをしました – Beetlejuice

+0

多分接続パラメータはTFDConnectionによってキャッシュされます。 ConnectionDefNameを別のものに設定しようとしましたが、「MyConn」に戻りましたか?それを解放して新しいものを作る? – Frazz

答えて

0

TFDConnectionオブジェクトへの参照が1つだけ必要であることがわかった。 私はそれをシングルトンクラスで定義し、現在は動作しています。

関連する問題