2017-08-01 74 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

斷開連接,設置新的定義並連接。沒有別的事情應該做。那是你做的?我不會依賴這樣一個事實,那就是經理正在傾聽變化併爲你做這件事。 – Victoria

+0

是的,我做了這個 – Beetlejuice

+0

也許連接參數被TFDConnection緩存。你有沒有嘗試過將ConnectionDefName設置爲不同的東西,然後回到'MyConn'?或者釋放它並創建一個新的? – Frazz

回答

0

我意識到我只需要一個TFDConnection對象的引用。 我在單例類中定義了它,現在可以工作。