首页 > 其他分享 >delphi FireDAC 批量执行命令(批量插入、更新、删除)

delphi FireDAC 批量执行命令(批量插入、更新、删除)

时间:2023-09-01 19:56:00浏览次数:44  
标签:Execute 批量 FireDAC FDCommand1 delphi 插入 100 ParamByName

FireDAC 批量执行命令(批量插入、更新、删除)

代码

批量插入

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  //建立连接
  FDConnection1.Connected := True;
  //开启事务
  FDConnection1.StartTransaction;
  try
    //设置语句
    FDCommand1.CommandText.Text := 'INSERT INTO tceshi VALUES(:ID, :Code, :Name, :Amount)';
    //设置参数类型和大小(ftString / ftWideString不设置大小会使用默认大小,占用缓冲区大小)
    FDCommand1.ParamByName('ID').DataType := ftInteger;
    FDCommand1.ParamByName('Code').DataType := ftString;
    FDCommand1.ParamByName('Code').Size := 10;
    FDCommand1.ParamByName('Name').DataType := ftString;
    FDCommand1.ParamByName('Code').Size := 20;
    FDCommand1.ParamByName('Amount').DataType := ftFloat;
    //设置插入的记录数
    FDCommand1.Params.ArraySize := 10000;
    //设置插入的内容
    for I := 0 to FDCommand1.Params.ArraySize - 1 do
    begin
      FDCommand1.ParamByName('ID').AsIntegers[I] := I + 1;
      FDCommand1.ParamByName('Code').AsStrings[I] := I.ToString;
      FDCommand1.ParamByName('Name').AsStrings[I] := I.ToString;
      FDCommand1.ParamByName('Amount').AsFloats[I] := I * 1.2;
    end;
    //设置进度条
    ProgressBar1.Max := 100;
    ProgressBar1.Position := 0;
    //循环批量提交
    for I := 1 to 100 do
    begin
      //从第0个索引项开始,插入100条记录
      //FDCommand1.Execute(100, 0);
      //从第100个索引项开始,插入200条记录
      //FDCommand1.Execute(300, 100);
      //循环执行,每次插入100条记录
      FDCommand1.Execute(100 * I, 100 * (I - 1));
      //更新进度条
      ProgressBar1.Position := I;
      Application.ProcessMessages;
    end;
    //提交事务
    FDConnection1.Commit;
  except on E: Exception do
    //回滚事务
    FDConnection1.Rollback;
  end;
end;

方法

FireDAC.Comp.Client.TFDCustomCommand.Execute

FireDAC.Comp.DataSet.TFDDataSet.Execute

procedure Execute(ATimes: Integer = 0; AOffset: Integer = 0; ABlocked: Boolean = False);

执行CommandText指定的SQL命令,它不返回结果集。如果命令返回结果集,则所有结果集都将被丢弃。

TFDCustomCommandTFDQueryTFDStoredProc 具有 Execute (ATimes: Integer = 0; AOffset: Integer = 0) 方法。

命令将从 AOffset 行开始执行 (ATimes - AOffset) 次。 ATimes 必须等于或小于 Params.ArraySize

参数

ATimes 定义了数组的长度。

AOffset 是数组中第一个项的索引。

参考

https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Array_DML_(FireDAC)

标签:Execute,批量,FireDAC,FDCommand1,delphi,插入,100,ParamByName
From: https://www.cnblogs.com/txgh/p/17672747.html

相关文章

  • 抖音视频批量采集下载
    ✨抖音去水印作品下载✨English|简体中文......
  • Mybatis之批量更新数据
    前言当我们使用mybatis的时候,可能经常会碰到一批数据的批量更新问题,因为如果一条数据一更新,那每一条数据就需要涉及到一次数据库的操作,包括网络IO以及磁盘IO,可想而知,这个效率是非常低下的。而平时我们很少直接使用原生jdbc直接操作数据库,而是会使用比较成熟的ORM框架,那么今天我们......
  • mysql字符集批量修改
    修改所有数据库字符集SELECTCONCAT('ALTERDATABASE',SCHEMA_NAME,'CHARACTERSETutf8mb4COLLATEutf8mb4_bin;')as'Fanrncho'FROMinformation_schema.`SCHEMATA`WHEREDEFAULT_CHARACTER_SET_NAMERLIKE'utf8mb4'ANDSCHEMA_NAME......
  • el-table树形数据 + jsPlumb , 批量映射字段
    <template><el-dialogtitle="映射"append-to-body:visible.sync="mappingShow":close-on-click-modal="false":before-close="closeFileMappingDialog"width="1000px"><el-c......
  • 批量/去掉office 2010 Word中标题前的黑点
    去掉单个标题前的小黑点批量去掉整篇文章标题前的小黑点......
  • 通过动态创建a标签,循环批量下载文件所遇到的问题记录
    1.现象:直接for循环动态创建a标签后,进行click事件触发下载时,你会发现浏览器只下载了最后一个文件原因:浏览器下载时,太快的话,会取消上次的下载解决方法一:可添加settimeout定时器,进行一定时间延迟,比如300毫秒,把下载触发的事件放到定时器中即可。2.解决方法二通过ifram......
  • 国标GB28181安防监控视频平台EasyGBS新功能:批量绑定角色与取消设备
    国标GB28181协议视频平台EasyGBS是基于国标GB28181协议的视频云服务平台,支持多路设备同时接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。国标视频监控平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台级联等功能,在视频......
  • 如何健壮地批量资源创建
    批量资源创建是一种典型的数据处理流程。这样的数据处理流程典型步骤是加载输入数据集遍历数据集,对每个条目,创建目标资源,目标资源可能是一种,也可能是嵌套的有层次结构的树状结构的一系列资源。这样的处理流程,如果不做任何错误处理,整个程序处于脆弱状态。应该考虑哪些问题呢?......
  • MySqlBulkCopy 批量新增数据
    MySqlConnector有个MySqlBulkCopy批量新增数据方法,不过只能用DataTable,需要把list转成DataTable代码如下:MySqlBulkCopymySqlBulkCopy=newMySqlBulkCopy(conn){DestinationTableName="userinfo"};mySqlBulkCopy.ColumnMappings.AddRange(table.Columns.Cast<DataC......
  • 批量python爬虫采集性能优化之减少网络延迟的方法
    今天,我们将一起探讨批量爬虫采集的性能优化,特别关注减少网络延迟的方法。网络延迟是爬虫程序中一个常见的性能瓶颈,通过优化网络延迟,我们可以提高爬虫程序的采集速度和效率。让我们一起来看看如何实现这一目标。1.使用异步请求传统的同步请求方式会导致爬虫程序在等待服务器响应时浪......