You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过TSQLConnection.Execute批量执行多条INSERT语句

解决Delphi中TSQLConnection批量执行MySQL INSERT语句的问题

原因分析

TSQLConnection连接MySQL时,默认不允许在单个Execute调用中执行多条用分号分隔的SQL语句,这和MySQL Workbench的默认配置存在差异,因此会触发语法错误异常。

解决方案

1. 修改连接参数,开启多语句支持

在TSQLConnection的Params属性中添加或修改以下参数:

AllowMultiQueries=true

可以在设计时直接在属性编辑器里添加,也可以在代码中动态设置:

mySQLConnection.Params.Add('AllowMultiQueries=true');
mySQLConnection.Connected := True;

2. 确认批量SQL语句格式正确

确保批量INSERT语句格式无误,示例语句如下:

insert into table values (1,100);insert into table values (2,200);insert into table values (3,300)

注意避免多余空格或语法错误,Delphi的MySQL驱动对语句格式的严格性可能略高于Workbench。

3. 更高效的批量插入方案(推荐)

如果数据量较大,更推荐以下两种性能更优的方案:

  • 单条INSERT语句批量插入:使用MySQL的INSERT ... VALUES (...), (...), (...)语法,无需开启多语句支持:
mySQLConnection.Execute('insert into table values (1,100), (2,200), (3,300)', nil);
  • 参数化批量插入:通过TSQLQuery预编译参数化语句,循环设置参数并执行,能有效避免SQL注入,同时保证执行效率。

验证

修改连接参数后,重新执行原来的多语句INSERT调用,即可正常运行。


内容的提问来源于stack exchange,提问作者delphirules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:54:52