命令对象 (ADO)

定义要针对数据源执行的特定命令。

备注

使用 Command 对象查询数据库并返回 Recordset 对象中的记录、执行大容量操作或操作数据库的结构。 根据提供程序的功能,某些命令集合、方法或属性在被引用时可能会生成错误。

使用 Command 对象的集合、方法和属性,可以执行以下操作:

  • 使用 CommandText 属性定义命令的可执行文本(例如 SQL 语句)。 或者,对于简单字符串以外的命令或查询结构(例如 XML 模板查询),使用 CommandStream 属性定义命令。

  • (可选)使用 Dialect 属性指示 CommandText 或 CommandStream 中使用的命令方言。

  • 使用 Parameter 对象和 Parameters 集合定义参数化查询或存储过程参数。

  • 指示是否应使用 NamedParameters 属性将参数名称传递给提供程序。

  • 如果合适,使用 Execute 方法执行命令并返回 Recordset 对象。

  • 在执行之前使用 CommandType 属性指定命令的类型以优化性能。

  • 使用 Prepared 属性控制提供程序是否在执行之前保存命令的预备(或编译)版本。

  • 使用 CommandTimeout 属性设置提供程序等待命令执行的秒数。

  • 通过设置打开的连接的 ActiveConnection 属性将其与 Command 对象相关联。

  • 设置 Name 属性,将 Command 对象标识为关联的 Connection 对象的方法。

  • 将 Command 对象传递给 Recordset 的 Source 属性以获取数据。

  • 使用 Properties 集合访问特定于提供程序的属性。

注意

若要在不使用 Command 对象的情况下执行查询,请将查询字符串传递给 Connection 对象的 Execute 方法或 Recordset 对象的 Open 方法。 但是,当要保存命令文本并重新执行它或使用查询参数时,需要 Command 对象。

要创建一个 Command 对象并使其独立于之前定义的 Connection 对象,请将其 ActiveConnection 属性设置为一个有效的连接字符串。 ADO 仍会创建 Connection 对象,但它不会将该对象分配给对象变量。 但是,如果要将多个 Command 对象与同一连接相关联,则应显式创建并打开一个 Connection 对象;这会将 Connection 对象分配给对象变量。 请确保成功打开 Connection 对象之后再将其分配给 Command 对象的 ActiveConnection 属性,因为分配一个关闭的 Connection 对象会导致错误。 如果未将 Command 对象的 ActiveConnection 属性设置为此对象变量,即使使用相同的连接字符串,ADO 也会为每个 Command 对象创建新的 Connection 对象。

要执行命令,请通过关联的 Connection 对象上的 Name 属性调用它。 Command 必须将其 ActiveConnection 属性设置为 Connection 对象。 如果 Command 具有形参,则将其值作为实参传递给方法。

如果在同一连接上执行两个或多个 Command 对象,并且其中任何一个 Command 对象都是带有输出参数的存储过程,则会发生错误。 要执行每个 Command 对象,请使用单独的连接,或者断开该连接上的所有其他 Command 对象。

Parameters 集合是 Command 对象的默认成员。 因此,以下两个代码语句等效。

objCmd.Parameters.Item(0)  
objCmd(0)  
  • Command 对象对于编写脚本而言不安全。

本部分包含以下主题。

另请参阅

连接对象 (ADO)
参数集合 (ADO)
属性集合 (ADO)
附录 A:提供程序