将 ConnectForm 字段从 ZeosLib 转换为 FireDAC

Converting ConnectForm fields from ZeosLib to FireDAC

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';




维多利亚解决方案后的最终代码,看起来是这样的:

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。我应该为我的连接指定 DriverName 吗?

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

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

你的翻译有误。您只是重复调用 Open 方法,每次都传递一个连接定义参数(而且,您传递的值是 Delphi 语句的一部分)。这不是它应该的工作方式。

如果您想使用 Open 方法指定连接定义参数,您必须向那里传递一个完全限定的连接字符串。

嗯,要单独指定连接定义参数,您可以通过 Params collection (see 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 collection, TFDPhysMySQLConnectionDefParams (this class you can remember from my 的特定 MySQL 实现来做同样的事情,例如:

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 主题。