将ConnectForm字段从ZeosLib转换为FireDAC

时间:2018-08-22 05:18:27

标签: delphi firedac zeos

Delphi 10.2.2

1。。这是将适用于MySQL的code part从ZeosLib转换为FireDAC的正确方法吗?

ZeosLib:

procedure TMeConnectForm.edExit(Sender: TObject);
begin
  try
    MainForm.MyTrinityConnection.Password := edPassword.Text;
    MainForm.MyTrinityConnection.HostName := edServer.Text;
    MainForm.MyTrinityConnection.User := edUsername.Text;
    MainForm.MyTrinityConnection.Database := edmDatabase.Text;
    MainForm.MyTrinityConnection.Port := StrToIntDef(edPort.Text, 3306);
  except
    ActiveControl := Sender as TWinControl;
    raise;
  end;
end;

FireDAC:

procedure TMeConnectForm.edExit(Sender: TObject);
begin
  try
    MainForm.MyTrinityConnection.Open('Password := edPassword.Text');
    MainForm.MyTrinityConnection.Open('Server:= edServer.Text');
    MainForm.MyTrinityConnection.Open('User_Name:= edUsername.Text');
    MainForm.MyTrinityConnection.Open('Database:= edmDatabase.Text');
    MainForm.MyTrinityConnection.Open('Port:= StrToIntDef(edPort.Text, 3306)');
  except
    ActiveControl := Sender as TWinControl;
    raise;
  end;
end;

2。。是否也应该在此插入?

MainForm.MyTrinityConnection.DriverName:='MYSQL';




Victorias解决方案之后的最终代码如下:

procedure TMeConnectForm.edExit(Sender: TObject);
begin
  try
    MainForm.MyTrinityConnection.DriverName:='MySQL';
    MainForm.MyTrinityConnection.Params.AddPair('Server', edServer.Text);
    MainForm.MyTrinityConnection.Params.AddPair('Port', edPort.Text);
    MainForm.MyTrinityConnection.Params.AddPair('Database', edmDatabase.Text);
    MainForm.MyTrinityConnection.Params.AddPair('User_Name', edUsername.Text);
    MainForm.MyTrinityConnection.Params.AddPair('Password', edPassword.Text);
  except
    ActiveControl := Sender as TWinControl;
    raise;
  end;
end;

1 个答案:

答案 0 :(得分:1)

1。我应该为我的连接指定DriverName吗?

是的,如果该连接对象尚未指定驱动程序,则必须这样做。

2。如何设置连接定义参数?

您的翻译是错误的。您只是在重复调用Open方法,每次都使用单个连接定义参数(更重要的是,要传递的值是Delphi语句的一部分)。那不是应该的方式。

如果您想使用Open方法来指定连接定义参数,则必须在其中传递一个完全合格的连接字符串。

好吧,要分别指定连接定义参数,您可以通过Params集合中的名称/值对方式进行描述(有关说明,请参见Connection Definition Parameters),例如:

FDConnection1.Params.Clear;
FDConnection1.Params.AddPair('Server', edServer.Text);
FDConnection1.Params.AddInt('Port', StrToIntDef(edPort.Text, 3306));
FDConnection1.Params.AddPair('Database', edmDatabase.Text);
FDConnection1.Params.AddPair('User_Name', edUsername.Text);
FDConnection1.Params.AddPair('Password', edPassword.Text);

(可选)您可以通过Params集合的特定MySQL实现 TFDPhysMySQLConnectionDefParams (您可以从我的last answer记住的此类)中进行相同的操作,例如:

uses
  FireDAC.Phys.MySQLWrapper;

var
  MySQLDef: TFDPhysMySQLConnectionDefParams;
begin
  MySQLDef := TFDPhysMySQLConnectionDefParams(FDConnection1.Params);
  MySQLDef.Server := edServer.Text;
  MySQLDef.Port := StrToIntDef(edPort.Text, 3306);
  MySQLDef.Database := edmDatabase.Text;
  MySQLDef.UserName := edUsername.Text;
  MySQLDef.Password := edPassword.Text;
end;

有关连接定义的一般性阅读,请参考Defining Connection主题。