2013-05-13 116 views
2

我使用FireDAC的Array DML功能将大量数据插入到远程MS SQL数据库中。FireDAC:Array DML进度

它工作正常,但需要时间来完成执行方法。在执行方法运行时,我想知道FireDAC的内部进度,以便我可以向用户显示它耐心等待。

如何获取执行方法的实际状态?

PS:Delphi XE4和FireDAC v8

谢谢。

回答

2

这对DBMS API来说是一个问题 - 它是否提供进度反馈? Array DML的本质是将整组数组项目作为单个数据包发送到DBMS。在执行结束时,DBMS提供了反馈 - 再次为整个数组项目。这减少了往返次数。中间的反馈会增加往返次数。

AFAIK,没有一个API提供进度反馈。所以,FireDAC也不提供它。如果您需要进度反馈,则不要使用Array DML并使用逐一的ExecSQL方法。

+1

因此,我需要将我的所有数据分成100个例子,并为每个数据使用小的DML数组。 – 2013-05-13 18:53:58

+1

其他选项 - 是的,您可以。 – 2013-05-14 04:15:22