CommandText 属性
指示要根据提供者发出的命令文本。
设置和返回值
设置或返回 String 值,该值包含提供者命令,如 SQL 语句、表名、相对 URL 或存储过程调用。默认值为零 ""(零长度字符串)。
说明
用 CommandText 属性设置或返回由 Command 对象表示的命令文本。此文本通常为 SQL 语句,但也可以是提供者能识别的任何其他类型的命令语句,如存储过程调用。SQL 语句必须是提供者的查询处理器所支持的特定方言或版本。
如果将 Command 对象的 Prepared 属性设置为 True 并在设置 CommandText 属性时将 Command 对象绑定到打开的连接上,那么当调用 Execute 或 Open 方法时,ADO 将准备查询(即提供者存储的查询的编译格式)。
ADO 可能改变 CommandText 属性,这取决于 CommandType 属性设置。随时都可读取 CommandText 属性以查看 ADO 在执行过程中使用的实际命令文本。
用 CommandText 属性设置或返回相对 URL,该 URL 用于指定诸如文件或目录类型的资源。资源是相对于绝对 URL 显式指定的位置而言,或相对于打开的 Connection 对象隐式指定的位置而言。
CommandType 属性
指示 Command 对象的类型。
设置和返回值
设置或返回一个或多个 CommandTypeEnum 值。也可以使用 ExecuteOptionEnum 中的 adExecuteNoRecords 常量通过最小化内部处理来提高性能。此常量从不独立使用。它总是与 adCmdText 或 adCmdStoredProc(例如 adCmdText+adExecuteNoRecords)组合使用。如果将 adExecuteNoRecords 与 Open 方法或与该方法使用的 Command 对象一起使用,将产生错误。
说明
用 CommandType 属性优化 CommandText 属性的计算。
如果 CommandType 属性值等于 adCmdUnknown(默认值),系统性能将会降低,因为 ADO 必须调用提供者来确定 CommandText 属性是 SQL 语句、存储过程还是表名。如果知道正在使用的命令的类型,设置 CommandType 属性可以提示 ADO 直接转入相关代码。如果 CommandType 属性与 CommandText 属性中的命令类型不匹配,那么在调用 Execute 方法时将产生错误。
Prepared 属性
指示执行前是否保存命令的编译版本。
设置和返回值
设置或返回 Boolean 值,如果设置为 True,则指示要准备的命令。
说明
用 Prepared 属性将提供者保存为查询的已准备好(或已编译)版本,该查询是第一次执行 Command 对象前在 CommandText 属性中指定的。这可能会降低命令第一次执行的速度,但一旦提供者编译一个命令后,便可将命令的编译版本用于所有后续的执行中,这样便可提高性能。
如果该属性为 False,提供者将直接执行 Command 对象而不创建编译版本。
如果提供者不支持命令准备,则一旦将此属性设置为 True,提供者便可能返回错误。如果它不返回错误,则仅忽略准备命令的请求,并将 Prepared 属性设置为 False。
CommandTimeout 属性
指示执行命令期间在终止尝试和产生错误之前需等待的时间。
设置和返回值
设置或返回 Long 值,该值指示等待命令执行的秒数。默认值为 30。
说明
用 Connection 对象或 Command 对象的 CommandTimeout 属性来允许因网络拥挤或服务器负载过重产生的延迟而取消 Execute 方法调用。如果在 CommandTimeout 属性设置的时间间隔内未执行完命令,将产生错误,并且 ADO 取消该命令。如果将属性设置为零,ADO 将一直等待到命令执行完毕。请确保正在为其编写代码的提供者和数据源支持 CommandTimeout 功能。
Connection 对象的 CommandTimeout 设置对同一 Connection 中 Command 对象上的 CommandTimeout 设置没有影响,即 Command 对象的 CommandTimeout 属性不继承 Connection 对象的 CommandTimeout 值。
在 Connection 对象上,打开 Connection 后,CommandTimeout 属性将保持为读/写。
ActiveConnection 属性
指示指定的 Command、Recordset 或 Record 对象当前所属的 Connection 对象。
设置和返回值
设置或返回 String 值或 Variant,如果连接被关闭,则 String 值包含连接的定义。如果连接打开,则 Variant 包含当前 Connection 对象。默认值是 Null 对象引用。请参阅 ConnectionString 属性。
说明
用 ActiveConnection 属性确定 Connection 对象,将在该对象上执行指定的 Command 对象或打开指定的 Recordset。
Command
对于 Command 对象,ActiveConnection 属性为读/写。
在将此属性设置为打开的 Connection 对象或有效的连接字符串之前,如果试图调用 Command 对象的 Execute 方法,将产生错误。
Microsoft Visual Basic 将 ActiveConnection 属性设置为 Nothing 将断开 Command 对象与当前 Connection 的关联,并导致提供者释放数据源上所有相关联的资源。然后,可以将 Command 对象与相同的或另一个 Connection 对象相关联。某些提供者允许将属性设置从一个 Connection 更改为另一个,而不必先将该属性设置为 Nothing。
如果 Command 对象的 Parameters 集合包含由提供者提供的参数,那么当把 ActiveConnection 属性设置为 Nothing 或另一个 Connection 对象时,集合将被清空。如果手动创建 Parameter 对象并用这些对象填充 Command 对象的 Parameters 集合,则将 ActiveConnection 属性设置为 Nothing 或另一个 Connection 不会影响 Parameters 集合。
关闭与 Command 对象相关联的 Connection 对象可将 ActiveConnection 属性设置为 Nothing。将此属性设置为已关闭的 Connection 对象将产生错误。
Recordset
对于打开的 Recordset 对象或其 Source 属性被设置为有效的 Command 对象的 Recordset 对象,ActiveConnection 属性为只读。否则,该属性为读/写。
可将此属性设置为有效的 Connection 对象或有效的连接字符串。在这种情况下,提供者将用此定义创建新的 Connection 对象并打开连接。另外,提供者可以将此属性设置为新的 Connection 对象,以向您提供访问扩展错误信息的 Connection 对象或执行其他命令的方法。
如果使用 Open 方法的 ActiveConnection 参数打开 Recordset 对象,ActiveConnection 属性将继承该参数的值。
如果将 Recordset 对象的 Source 属性设置为有效的 Command 对象变量,Recordset 的 ActiveConnection 属性将继承 Command 对象的 ActiveConnection 属性的设置。
远程数据服务用法 当在客户端 Recordset 对象上使用时,只能将此属性设置为连接字符串或 Nothing(在 Microsoft Visual Basic 或 Visual Basic Scripting Edition 中)。
Record
当 Record 对象关闭时,此属性为读/写,并可包含连接字符串或对打开的 Connection 对象的引用。当 Record 对象打开时,此属性为只读,并包含对打开的 Connection 对象的引用。
当用 URL 打开 Record 对象时,将隐式地创建 Connection 对象。通过为此属性分配 Connection 对象或将 Connection 对象用作 Open 方法调用中的参数,可以用现有的打开的 Connection 对象来打开 Record。如果从现有的 Record 或 Recordset 打开 Record,它将自动与该 Record 或 Recordset 对象的 Connection 对象相关联。
Execute 方法 (ADO Command)
执行 CommandText 属性中指定的查询、SQL 语句或存储过程。
语法
对于以行返回的 Command:
Set recordset = command.Execute( RecordsAffected, Parameters, Options )
对于不是以行返回的 Command:
command.Execute RecordsAffected, Parameters, Options
返回值
返回 Recordset 对象引用。
参数
RecordsAffected 可选。Long 变量,提供者向其返回受操作影响的记录的数目。RecordsAffected 参数仅应用于操作查询或存储过程。RecordsAffected 不返回由返回结果的查询或存储过程返回的记录数目。要返回此信息,请使用 RecordCount 属性。
Parameters 可选。用 SQL 语句传递的参数值的 Variant 数组。(用此参数传递时,输出参数将不能返回正确的值。)
Options 可选。Long 值,指示提供者应如何计算 Command 对象的 CommandText 属性。可以是一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值。
说明
使用 Command 对象的 Execute 方法将执行在该对象的 CommandText 属性中指定的查询。如果 CommandText 属性指定以行返回的查询,执行产生的任何结果都将存储在新的 Recordset 对象中。如果此命令不是以行返回的查询,提供者将返回关闭的 Recordset 对象。如果不需要 Recordset,某些应用程序语言允许忽略此返回值。
如果查询带有参数,将使用 Command 对象的参数的当前值,除非用 Execute 调用传递的参数值覆盖它们。可以在调用 Execute 方法时通过省略某些参数的新值来覆盖参数子集。指定参数的次序与此方法传递这些参数的次序相同。例如,如果有四个(或更多)参数,用户只希望传递第一个和第四个参数的新值,那么可以将 Array(var1,,,var4) 作为 Parameters 的参数传递。
注意 在 Parameters 参数中传递时,输出参数将不能返回正确值。
此操作结束时将发出 ExecuteComplete 事件。
Parameters 集合
包含 Command 对象的所有 Parameter 对象。
说明
Command 对象包含一个由 Parameter 对象组成的 Parameters 集合。
使用 Command 对象的 Parameters 集合的 Refresh 方法检索存储过程的提供者参数信息,或者检索 Command 对象中指定的参数化查询。某些提供者不支持存储过程调用或参数化查询;使用这些提供者时,调用 Parameters 集合的 Refresh 方法将返回错误。
如果调用 Refresh 方法前没有定义自己的 Parameter 对象而访问 Parameters 集合,ADO 将自动为您调用该方法并预置该集合。
如果知道与要调用的存储过程或参数化查询相关联的参数的属性,便可以最小化对提供者的调用以提高性能。使用 CreateParameter 方法创建带适当属性设置的 Parameter 对象,并使用 Append 方法将它们添加到 Parameters 集合中。这使用户可以设置和返回参数值,而不必调用提供者来获得参数信息。如果正在写给不支持参数信息的提供者,那么必须使用此方法手动预置 Parameters 集合后才能使用参数。必要时可以使用 Delete 方法从 Parameters 集合中删除 Parameter 对象。
Parameter 对象
表示与基于参数化查询或存储过程的 Command 对象相关联的参数。
说明
许多提供者均支持参数化命令。所需操作在这些命令中只定义一次,但可以用变量(或参数)来改变命令的某些细节。例如,SQL SELECT 语句可以用一个参数定义 WHERE 子句的匹配标准,而用另一个参数定义 SORT BY 子句的列名称。
Parameter 对象表示与参数化查询相关联的参数,或表示输入/输出参数和存储过程的返回值。Parameter 对象的某些集合、方法或属性可能不可用,这取决于提供者的功能。
用 Parameter 对象的集合、方法和属性可以执行下列操作:
用 Name 属性设置或返回参数的名称。
用 Value 属性设置或返回参数的值。Value 为 Parameter 对象的默认属性。
用 Attributes、Direction、Precision、NumericScale、Size 和 Type 属性设置或返回参数特性。
用 AppendChunk 方法将长二进制或字符数据传递给参数。
如果知道与要调用的存储过程或参数化查询相关联的参数的名称和属性,就可以用 CreateParameter 方法来创建具有适当属性设置的 Parameter 对象,并用 Append 方法将它们添加到 Parameters 集合中。这样便可以设置并返回参数值,而不必对 Parameters 集合调用 Refresh 方法检索来自提供者的参数信息,从而避免了潜在的资源密集型操作。
