【问题标题】:TADOQuery PreparedTADOQuery 准备
【发布时间】:2013-03-14 12:11:18
【问题描述】:

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

这里是手册解释:

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

将参数注入到 SQL 文本中?

【问题讨论】:

    标签: delphi ado delphi-6


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 所以如果命令将执行一次,最好设置为 False,更多的一次...设置为 true!
    【解决方案2】:

    Tt 的目的是减少与重复执行多次执行的 SQL 语句相关的解析和编译开销。
    应用程序可以多次执行参数化语句,方法是在每次执行时提供不同的参数集,而不是在参数集不同时重新构建语句。
    Executing Prepared Statements

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-25
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多