6

TADOQuery 组件具有“准备”属性,手册说当准备设置为 TRUE 时,ADO 会“准备”命令,这是什么意思?

以下是手动解释:

在调用 Execute 方法之前设置 Prepared 以指定 ADO 是否准备命令。如果 Prepared 设置为 True 并且命令组件连接到数据存储,则 ADO 在执行命令之前准备命令。如果 Prepared 设置为 False,ADO 不会准备命令。

它将参数注入 SQL 文本?

4

2 回答 2

6

下面是 Delphi 2007 帮助文件中的一些更好的文档:

使用 Prepared 属性让提供程序在 Command 对象首次执行之前保存在 CommandText 属性中指定的查询的准备(或编译)版本。这可能会减慢命令的第一次执行,但是一旦提供者编译了命令,提供者将使用该命令的编译版本进行任何后续执行,这将提高性能。

如果该属性为 False,则提供者将直接执行 Command 对象而不创建编译版本。

如果提供程序不支持命令准备,则在此属性设置为 True 时可能会返回错误。如果提供程序没有返回错误,它会简单地忽略准备命令的请求并将 Prepared 属性设置为 False。

这基本上说 SQL 语句已编译(预解析、标记化和分析)。当查询被多次使用时,每次都可以使用这个编译版本,只需替换参数值,而无需重新编译所有语句并做其他工作。

于 2013-03-14T12:33:13.967 回答
4

Tt 是为了减少与重复执行多次执行的 SQL 语句相关的解析和编译开销。
应用程序可以通过在每次执行时提供不同的参数集来多次执行参数化语句,而不是在参数集不同时重新构建语句。
执行准备好的语句

于 2013-03-14T12:32:40.603 回答