delphi FireDac持久连接未更新

2skhul33  于 2023-04-11  发布在  其他
关注(0)|答案(2)|浏览(238)

我的应用程序需要定义一个持久连接定义,但有时需要更改所连接的数据库。
所以我用这段代码创建了一个定义:

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组件保持连接到旧数据库,而不是新的。
我该怎么做才能“刷新”这个?

rhfm7lfc

rhfm7lfc1#

我意识到我只需要一个对TFDConnection对象的引用。我在一个单例类中定义了它,现在可以工作了。

nwlls2ji

nwlls2ji2#

这是一个老问题,但我刚刚在 Delphi 10.4中遇到了同样的问题。我使用TfrmFDGUIxFormsConnEdit表单让用户编辑连接并将其保存到默认的Ini文件中。然而,当设置.ConnectionDefName时,连接没有拾取用户刚刚输入的设置,即使设置被正确地写入了ini文件。为了解决这个问题,我必须像这样构建和设置连接字符串:

Connection.ConnectionString := ConnectionDef.BuildString();
Connection.Open;

相关问题