使用 TFDConnection 以编程方式设置 "Server"
Setting "Server" programmatically with a TFDConnection
TFDConnection.Params.Server 不是 Delphi XE7 中发布的有效 属性。如何以编程方式设置服务器位置?我有 2 个 MySQL 服务器(测试和生产),它们位于不同的 ip,并且基于我在应用程序中所做的事情,我想轻松地在 2 个服务器之间来回切换。
请阅读文档,它告诉您如何为 MySQL:
定义 FireDAC 连接
Working with Connections (FireDAC)
Connect to MySQL Server (FireDAC)
您可以将数据库服务器指定为连接定义的一部分:
可以在外部 .ini 文件中定义连接定义,然后您可以在 TFDManager.ConnectionDefFileName
property, or load dynamically using the 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;
这对我有用。根据需要添加任何其他参数
var
oParams: TStrings;
begin
oParams := TStringList.Create;
oParams.Add('Server=' + YourServer);
oParams.Add('Database=' + YourDatabase);
oParams.Add('OSAuthent=Yes');
FDManager.AddConnectionDef('CNX1', 'MSSQL', oParams);
FDConnection.ConnectionDefName := 'CNX1';
FDConnection.Connected := true;
if FDConnection.Connected then
ShowMessage('Connected');
oParams.Free;
回答晚了,但做起来很简单。
重述 TLama 在评论中所说的话:
参数属性可能因驱动程序类型而异,因此将驱动程序类型设置为 MySQL,然后将 PARAMS 转换为驱动程序类型。
只是做:
(Conn1.Params as TFDPhysMySQLConnectionDefParams).Server := '127.0.0.1';
这样编译器可以在编译时验证参数。
TFDConnection.Params.Server 不是 Delphi XE7 中发布的有效 属性。如何以编程方式设置服务器位置?我有 2 个 MySQL 服务器(测试和生产),它们位于不同的 ip,并且基于我在应用程序中所做的事情,我想轻松地在 2 个服务器之间来回切换。
请阅读文档,它告诉您如何为 MySQL:
定义 FireDAC 连接Working with Connections (FireDAC)
Connect to MySQL Server (FireDAC)
您可以将数据库服务器指定为连接定义的一部分:
可以在外部 .ini 文件中定义连接定义,然后您可以在 TFDManager.ConnectionDefFileName
property, or load dynamically using the 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;
这对我有用。根据需要添加任何其他参数
var
oParams: TStrings;
begin
oParams := TStringList.Create;
oParams.Add('Server=' + YourServer);
oParams.Add('Database=' + YourDatabase);
oParams.Add('OSAuthent=Yes');
FDManager.AddConnectionDef('CNX1', 'MSSQL', oParams);
FDConnection.ConnectionDefName := 'CNX1';
FDConnection.Connected := true;
if FDConnection.Connected then
ShowMessage('Connected');
oParams.Free;
回答晚了,但做起来很简单。
重述 TLama 在评论中所说的话:
参数属性可能因驱动程序类型而异,因此将驱动程序类型设置为 MySQL,然后将 PARAMS 转换为驱动程序类型。 只是做:
(Conn1.Params as TFDPhysMySQLConnectionDefParams).Server := '127.0.0.1';
这样编译器可以在编译时验证参数。