2017-08-01 85 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对象的引用。 我在单例类中定义了它,现在可以工作。