gpt4 book ai didi

mysql - 使用 TFDConnection 以编程方式设置 "Server"

转载 作者:可可西里 更新时间:2023-11-01 07:02:34 25 4
gpt4 key购买 nike

TFDConnection.Params.Server 不是 Delphi XE7 中有效的已发布属性。如何以编程方式设置服务器位置?我有 2 个 MySQL 服务器(测试和生产),它们位于不同的 ip,并且根据我在应用程序中所做的事情,我想轻松地在 2 个服务器之间来回切换。

最佳答案

请阅读文档,它告诉你如何为 MySQL 定义 FireDAC 连接:

Working with Connections (FireDAC)

Connect to MySQL Server (FireDAC)

您可以将数据库服务器指定为连接定义的一部分:

Defining Connection (FireDAC)

连接定义可以在外部 .ini 文件中定义,然后您可以在 TFDManager.ConnectionDefFileName 中引用该文件属性,或使用 TFDManager.LoadConnectionDefFile() 动态加载方法。

[MySQL_Connection_1]
DriverID=MySQL
Server=192.168.1.100
...

[MySQL_Connection_2]
DriverID=MySQL
Server=192.168.1.101
...

或者动态使用 TFDManager.ConnectionDefs属性:

var
oDef: IFDStanConnectionDef;
begin
oDef := FDManager.ConnectionDefs.AddConnectionDef;
oDef.Name := 'MySQL_Connection_1';
oDef.DriverID := 'MySQL';
oDef.Server := '192.168.1.100';
...
oDef.Apply;

oDef := FDManager.ConnectionDefs.AddConnectionDef;
oDef.Name := 'MySQL_Connection_2';
oDef.DriverID := 'MySQL';
oDef.Server := '192.168.1.101';
...
oDef.Apply;

var
oParams: TStrings;
begin
oParams := TStringList.Create;
oParams.Add('Server=192.168.1.100');
...
FDManager.AddConnectionDef('MySQL_Connection_1', 'MySQL', oParams);

oParams.Clear;
oParams.Add('Server=192.168.1.101');
...
FDManager.AddConnectionDef('MySQL_Connection_2', 'MySQL', oParams);

无论哪种方式,您都可以告诉 TFDConnection 在需要时使用哪个连接定义来访问每个数据库:

FDConnection1.ConnectionDefName := 'MySQL_Connection_1';
// or: FDConnection1.ConnectionDefName := 'MySQL_Connection_2';
FDConnection1.Connected := True;

或者,如果您不想预定义单独的连接定义,则可以直接在 TFDConnection.Params 属性中指定连接参数:

FDConnection1.DriverName := 'MySQL';
FDConnection1.Params.Clear;
FDConnection1.Params.Add('Server=192.168.1.100');
// or: FDConnection1.Params.Values['Server'] := '192.168.1.100';
...
FDConnection1.Connected := True;

关于mysql - 使用 TFDConnection 以编程方式设置 "Server",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com