首页 > 解决方案 > 将 ZSQLProcessor.Script.Text 从 ZeosLib 迁移到 FireDAC for MySQL

问题描述

正在尝试将应用程序迁移到 Delphi 10.2 上的 FireDAC 使用,并且只使用此功能: Source on github

   procedure TMainForm.ExecuteScript(script: string; memo: TMemo);
var
  Log: TStringList;
  FN: string;
begin
  ShowHourGlassCursor;
  ZSQLProcessor.Script.Text := script;
  try
    ZSQLProcessor.Connection.StartTransaction;
    ZSQLProcessor.Execute;
    ZSQLProcessor.Connection.Commit;
  except
    on E:Exception do
    begin
      ZSQLProcessor.Connection.Rollback;
      memo.Text := E.Message;
      Exit;
    end;
  end;

卡住了,无法相处,任何帮助都会很好:

ZSQLProcessor.Script.Text := script;

参考: ZSqlProcessor.pas

没有最后一部分的转换函数如下所示:

procedure TMainForm.ExecuteScript(script: string; memo: TMemo);
var
  Log: TStringList;
  FN: string;
begin
  ShowHourGlassCursor;
  //ZSQLProcessor.Script.Text := script;
  try
    MyTrinityConnection.StartTransaction;
    FDScript1.ValidateAll;
    FDScript1.ExecuteAll;
    MyTrinityConnection.Commit;
  except
    on E:Exception do
    begin
      MyTrinityConnection.Rollback;
      memo.Text := E.Message;
      Exit;
    end;
  end;

标签: delphifiredaczeos

解决方案


要将单个 SQL 脚本分配给TFDScript对象,您只需一个TFDSQLScript项目添加到TFDSQLScripts集合并将其SQL字符串列表集合文本设置为您选择的 SQL 命令,例如:

FDScript1.SQLScripts.Add.SQL.Text := script; { ← this adds one TFDSQLScript item to the script collection and to this just added item assigns a SQL script }

当然,这假设TFDSQLScripts集合是清晰的,如果之前没有调用Clear


推荐阅读