热搜词
发表于 2008-3-4 15:06:58 | 显示全部楼层 |阅读模式
<p>一、使用Command对象的步骤<br />&nbsp;当在ASP页面中使用Command对象处理数据时,应首先设置命令类型、命令文本以及相关的活动数据库连接等,并通过Parameter对象传递命令参数,然后通过调用Execute方法来执行SQL语句或调用存储过程,以完成数据库记录的检索、添加、修改和删除等任务。<br />&nbsp; 1. 设置相关的数据库连接<br />&nbsp;使用ActiveConnection属性指示指定的Command或Recordset对象当前所属的Connection对象。该属性设置或返回包含了定义连接或Connection对象的字符串。使用ActiveConnection属性可以确定在其上将执行指定Command对象或打开指定Recordset的Connection对象。对于Command对象,ActiveConnection属性为可读可写。<br />&nbsp;必须首先将ActiveConnection属性设置为打开的Connection对象或设置为有效的连接字符串,然后才能调用Command对象的Execute方法。<br />&nbsp; 2. 设置命令类型<br />&nbsp;使用Command对象的CommandType属性指定命令类型以优化<br />性能。该属性可以设置或返回以下某个值。<br />adCmdText:将CommandText作为命令或存储过程调用的文本化定义进行计算。<br />adCmdTable:将CommandText作为其列全部由内部生成的SQL查询返回的表格的名称进行计算。<br />adCmdTableDirect:将CommandText作为其列全部返回的表格的名称进行计算。<br />adCmdStoredProc:将CommandText 作为存储过程名进行计算。 <br />adCmdUnknown:这是默认值,指示CommandText属性中的命令类型为未知。<br />adCommandFile:将CommandText作为持久Recordset文件名进行计算。<br />adExecuteNoRecords:指示CommandText为不返回行的命令或存储过程(例如插入数据的命令)。<br />&nbsp; 3. 定义命令的可执行文本<br />&nbsp;使用Command对象的CommandText属性定义命令(例如SQL语句)的可执行文本,即要发送给提供程序的命令文本。该属性可设置或返回包含提供程序命令的字符串值,例如SOL查询语句、表名称或存储的过程调用。<br />&nbsp; 4. 设置命令超时时间<br />&nbsp;使用Command对象的CommandTimeout属性指示在终止尝试和产生错误之前执行命令期间需等待的时间,即提供程序等待命令执行的秒数。该属性设置或返回长整型值,该值指示等待命令执行的时间(单位为秒),默认值为30。<br />&nbsp; 5. 执行命令<br />&nbsp;使用Command对象的Execute方法执行在CommandText属性中指定的查询、SQL语句或存储过程。语法格式分为以下两种形式。<br />对于按行返回的Command:<br />Set recordset = command.Execute( RecordsAffected, Parameters, Options )<br />对于不按行返回的Command:<br />command.Execute RecordsAffected, Parameters, Options<br />其中参数RecordsAffected为提供程序返回操作所影响的记录数目。<br />Parameters为使用SQL语句传送的参数值。Options指示提供程序如何对Command对象的CommandText属性赋值。</p><p>二、使用Parameters集合<br />&nbsp;Command对象具有由Parameter对象组成的Parameters集合,Parameter对象代表与基于参数化查询或存储过程的Command对象相关联的参数或自变量。通过创建Parameter对象并添加到Parameters集合中,可以向参数化查询传递所需要的数据。<br />&nbsp; 1. 创建Parameter对象<br />&nbsp;使用CreateParameter方法可以用指定的名称、类型、方向、大小和值<br />创建新的Parameter对象,语法格式如下:<br />&nbsp;Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)<br />参数Name指定Parameter对象的名称。<br />Type指定Parameter对象的数据类型,可以使用符号常量为其赋值。例如,adDate表示日期值;adInteger表示4字节的带符号整型,等等。<br />Direction参数指定Parameter对象类型,可以设置或返回以下某个值:adParamInput指示输入参数(默认值);adParamOutput指示为输出参数;adParamInputOutput指示为输入参数和输出参数;adParamReturnValue指示为返回值。<br />Size指定参数值最大长度,以字符或字节数为单位。<br />Value指定Parameter对象的值。<br />&nbsp; 2. 将Parameter对象添加到Parameters集合<br />&nbsp;使用CreateParameter方法创建一个Parameter对象后,可以使用Append<br />方法将该对象添加到Parameters集合中。语法格式如下:<br />&nbsp;command.Parameters.Append object<br />其中object指定Parameter对象的名称。<br />&nbsp; 3. 删除Parameter对象<br />&nbsp;如果要从Parameters集合中删除Parameter对象,可以调用Parameters集<br />合的Delete方法,语法格式如下:<br />&nbsp;Parameters.Delete Index<br />其中参数Index指定要删除的Parameter对象的名称,或者该对象在Parameters集合中的位置索引值。<br />&nbsp; 4. 使用Parameter对象的属性<br />&nbsp;Parameter对象代表与参数化查询关联的参数,或输入/输出参数以及存储过程的返回值。用Name属性可设置或返回参数名称。使用Value属性可设置或返回参数值。使用Attributes和Direction、Precision、NumericScale、Size以及Type属性可设置或返回参数特性。使用AppendChunk方法可将长整型二进制或字符数据传递给参数。</p><p>三、使用Command对象执行SQL查询<br />&nbsp; 1. 检索记录<br />&nbsp;从表中检索符合某种条件的记录时,可以将带有WHERE子句的SQL SELECT查询语句作为Command对象的命令文本,并使用某个参数定义WHERE子句的匹配条件,也就是用问号“?”表示字段值,这种查询称为参数化查询。当使用Command对象的Execute方法执行命令时将返回一个记录集,执行命令时所需参数值可以通过Parameter对象来传递。<br />&nbsp;操作演示<br />&nbsp; 2. 添加记录<br />&nbsp;使用Command对象添加记录时,可以将SQL INSERT语句作为CommandText的值,并使用使用问号“?”来表示VALUES子句中的<br />值,执行命令时所需参数并通过相应的Paramater对象来传递。<br />&nbsp;<br />&nbsp; 3. 修改记录<br />&nbsp;使用Command对象添加记录时,可以将SQL UPDATE语句作为CommandText的值,并使用使用问号“?”来表示SET子句和WHERE子句中的值,执行命令时所需参数并通过相应的Paramater对象来传递。</p><p>&nbsp; 4. 删除记录<br />&nbsp;使用Command对象添加记录时,可以将SQL DELETE语句作为<br />CommandText的值,并使用使用问号“?”来表示WHERE子句中的值,<br />执行命令时所需参数并通过Paramater对象来传递。</p><p>四、使用Command对象执行存储过程<br />&nbsp;存储过程是存放在服务器上的SQL语句的预编译集合,它以一个名称存储在数据库中,并且是作为一个单元来处理的。存储过<br />程可以由应用程序通过一个调用来执行,并且允许声明变量和有条件执行,允许包含程序流、逻辑以及对数据库的查询,可以接受输入参数和输出参数,也可以返回单个或多个结果集以及返回值。</p><p>&nbsp;在ASP页面中,可以使用Command对象执行按行返回的存储过程和不按行返回的存储过程,可以向存储过程发送输入参数,也可以从存储过程中取得输出参数和返回码。</p><p>&nbsp;</p>
全部评论1
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-22 15:11 , Processed in 0.185650 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team