ExecSQL中的参数AExecDirect有什么作用?



我正在阅读类TFDCustomQuery的文档,我很好奇function ExecSQL(AExecDirect: Boolean): LongInt; overload;中参数AExecDirect的含义。

文档 (http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.Client.TFDCustomQuery.ExecSQL( 未解释此参数的作用。

如果将True传递给AExecDirect参数,FireDAC 将在执行之前省略命令准备(以及与使用的 DBMS 相关的一些内容(。因此,它的目的只是为了命令只执行一次,没有明确的命令准备。

关于这个ExecSQL方法重载,有一件重要的事情需要注意。调用此选项会修改对象的DirectExecute选项(通过AExecDirect参数值(,这可能是意料之外的。

当使用传递给AExecDirect参数的True值调用此方法重载时,可能会出现问题,期望以后调用其他ExecSQL重载调用将隐式准备命令。它们不会,因为将启用"直接执行"选项。

因此,DirectExecute选项引用实际上描述了此参数(因此此方法的此参数重载设置此选项(:

控制 SQL 语句的准备。

使用 DirectExecute 属性指定 FireDAC 是否应 在执行 SQL 语句之前准备 SQL 语句 (False( 或执行它 直接(真(。默认值为 False。

此属性最初是为 MS SQL Server 支持而引入的。这 准备和直接执行可能会有不同的效果,甚至 准备的执行可能会失败。如果你会遇到奇怪的错误,那么 尝试将 DirectExecute 设置为 True。

最新更新