【发布时间】:2013-05-07 14:21:47
【问题描述】:
我正在使用 FireDAC 的 Array DML 功能将大量数据插入到我的远程 MS SQL 数据库中。
它工作正常,但需要时间来完成执行方法。在执行方法运行时,我想知道FireDAC的内部进度,以便我可以将其展示给用户耐心等待。
如何获取execute方法的实际状态?
PS:Delphi XE4 和 FireDAC v8
谢谢。
【问题讨论】:
我正在使用 FireDAC 的 Array DML 功能将大量数据插入到我的远程 MS SQL 数据库中。
它工作正常,但需要时间来完成执行方法。在执行方法运行时,我想知道FireDAC的内部进度,以便我可以将其展示给用户耐心等待。
如何获取execute方法的实际状态?
PS:Delphi XE4 和 FireDAC v8
谢谢。
【问题讨论】:
这对 DBMS API 来说是一个相当大的问题——它是否提供进度反馈。 Array DML 的本质是整个数组项集作为单个数据包发送到 DBMS。并且在执行结束时,DBMS 提供反馈 - 再次针对完整的数组项集。这减少了往返次数。中间的反馈会增加往返次数。
AFAIK,没有一个 API 提供进度反馈。因此,FireDAC 也不提供它。如果您需要进度反馈,请不要使用 Array DML 并使用一对一的 ExecSQL 方法。
【讨论】: