TFDConnection.Params.Server不是Delphi XE7中的有效发布属性。如何以编程方式设置服务器位置?我有2个不同ip的MySQL服务器(测试和生产),根据我在应用程序中的操作,我想在2台服务器之间来回切换。
答案 0 :(得分:8)
请阅读文档,它会告诉您如何为MySQL定义FireDAC连接:
Working with Connections (FireDAC)
Connect to MySQL Server (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;
答案 1 :(得分:1)
最新答案,但是很简单。
重新评估TLama的评论:
param属性可能因驱动程序类型而异,因此请将驱动程序类型设置为MySQL,然后将PARAMS强制转换为驱动程序类型。 只要做:
(Conn1.Params as TFDPhysMySQLConnectionDefParams).Server := '127.0.0.1';
通过这种方式,编译器可以在编译时验证参数。
答案 2 :(得分:0)
这对我有用。根据需要添加任何其他参数
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;