我正在阅读班级TFDCustomQuery
的文档,我对AExecDirect
中参数function ExecSQL(AExecDirect: Boolean): LongInt; overload;
的含义感到好奇。
文档(http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.Client.TFDCustomQuery.ExecSQL)没有解释此参数的作用。
答案 0 :(得分:2)
如果您将 True 传递给 AExecDirect 参数,FireDAC将在执行前省略命令准备(以及与使用过的DBMS相关的一些事项)。因此,它的目的只是在没有明确命令准备的情况下执行一次命令。
有关此ExecSQL方法重载的重要事项。调用此对象会修改对象的DirectExecute选项(通过 AExecDirect 参数值),这可能不是预期的。
当一个人调用此方法重载并且 True 值传递给 AExecDirect 参数时,可能会出现问题,期望稍后调用另一个{{3重载调用将隐式准备命令。它们不会,因为ExecSQL选项将被启用。
因此,DirectExecute选项引用实际上描述了此参数(因此此方法的此参数重载设置此选项):
控制SQL语句的准备。
使用DirectExecute属性指定FireDAC是否应该 在执行之前准备一个SQL语句(False)或执行它 直接(真)。默认值为False。
此属性最初是为MS SQL Server支持引入的。该 准备和直接执行可能会产生不同的影响,甚至 准备好的执行可能会失败。如果你会得到特殊的错误,那么 尝试将DirectExecute设置为True。