TADOQuery准备就绪

6
TADOQuery组件有一个“prepared”属性,手册上说当设置为TRUE时,ADO会“准备”命令,这是什么意思?
以下是手册的解释:
在调用Execute方法之前设置Prepared以指定是否由ADO准备命令。如果将Prepared设置为True并且命令组件已连接到数据存储,则ADO在执行命令之前准备该命令。如果Prepared设置为False,则ADO不会准备该命令。
它会将参数注入SQL文本中吗?
2个回答

6
以下是关于 Delphi 2007 帮助文件的更好的文档:
使用 Prepared 属性,在 CommandText 属性中指定查询之前,使提供程序保存一个已准备(或编译)的版本。这可能会减慢命令的第一次执行,但是一旦提供程序编译了一个命令,提供程序将在任何后续执行中使用编译版本的命令,这将导致性能提高。
如果该属性为 False,则提供程序将直接执行 Command 对象而不创建已编译版本。
如果提供程序不支持命令准备,则在将此属性设置为 True 时可能会返回错误。如果提供程序没有返回错误,则简单地忽略准备命令的请求并将 Prepared 属性设置为 False。
这基本上说明 SQL 语句已编译(预解析和分词和分析)。当查询被多次使用时,可以每次使用已编译的版本,只需替换参数值,而无需重新编译所有语句并执行其他工作。

2
所以,如果该命令只会执行一次,最好将其设置为False;如果执行多次,则设置为True! - EProgrammerNotFound

4

为了减少重复执行多次的SQL语句所带来的解析和编译开销,可以使用参数化语句。
应用程序可以通过在每次执行时提供不同的参数集而不是在参数集不同时重建语句来执行参数化语句多次。
执行预处理语句


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接