您现在的位置: 军旅同心-旅游自驾-军旅文学 >> 读书赏析 >> 学习园地 >> 电脑网络 >> 技术文章 >> 正文
ASP 3.0高级编程(四十)
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005-9-10 12:35:05
的情况,以及对当前任务的适用性选择使用任一种对象。
       从Connection对象运行的命令一般是查询动作,但了解能够得到返回的记录集也是非常有用的。

9.1.1 返回一个记录集
       为了从Connection对象返回一个记录集,要使用Execute方法。语法是:
       Connection.Execute CommandText, [RecordsAffected], [Options]
       参数及说明如表9-1所示:
表9-1  Connection对象的Execute方法的参数及说明
参 数
说 明

CommandText
执行的命令文本。与Recordset的Open方法中的Source参数相同,也能代表一个现有的Command对象

RecordsAffected
受命令执行影响的记录数

Options
命令选项,可以是一个或多个CommandTypeEnum或ExecuteOptionEnum常数,详细的值请见上一章

       Execute方法可选择地返回一个记录集,在这种情况下只要将返回值赋给记录集变量。例如:
       Set conPubs = Server.CreateObject("ADODB.Connection")
       
       conPubs.Open strConn

       Set rsAuthors = conPubs.Execute("Authors")
       读者可能会奇怪使用Connection对象的Execute方法与使用Recordset对象的Open方法之间到底有什么区别?看上去区别不是很大,使用Recordset对象的Open方法可以改变光标类型和锁定类型。这些选项对于Connection对象的Execute方法是不可用的,因此永远只能得到一个只能前移的、只读的记录集。

9.1.2 操作命令
       如果正在运行操作命令,比如一个SQL UPDATE语句,那么可以使用RecordAffected参数找出有多少条记录受到该命令的影响。例如:
       Dim strSQL As String
       Dim lngRecs As Long

       strSQL = "UPDATE Titles SET Price = Price * 1.10" & "WHERE Type='Business'"

       conPubs.Execute strSQL, lngRecs, adCmdText

       Response.Write lngRecs & " records were updated."
       上述代码将所有类型为Business的书的单价增加了10%。一旦Execute命令执行完毕,受Update命令影响的记录数就返回到变量lngRecs中,这就是RecordsAffected参数。
       注意,已经为命令指定了adCmdText选项,告诉ADO CommandText参数是一个文本命令。一般这不是严格必须的,其目的只是让ADO预先知道执行的命令属于何种类型,这样能够提高性能。记住,这个值可以是一个或多个CommandTypeEnum值。
       无记录集返回
       如果上面的例子不返回记录集,那么在Execute语句中加入另一个选项也是较好的方法:
       conPubs.Execute strSQL, lngRecs, adCmdText + adExecuteNoRecords
       使用adExecuteNoRecords告诉ADO执行的命令不返回任何记录。所以,ADO不必费心去创建一个记录集。如果省略了该选项,那么ADO将会创建一个空的记录集,很明显这浪费了时间,因此加上这个选项会加快语句的执行。

9.2 Command对象
       Command对象特定地为处理各种类型的命令而设计,特别是那些需要参数的命令。与Connection对象相似,Command对象可以运行返回记录集和不返回记录集两种类型的命令。实际上,如果命令不含有参数,那么它并不关心是使用Connection对象,还是Command对象,还是Recordset对象。

9.2.1 返回记录集
       对于一个返回记录集的命令,可使用Execute方法。然而,与Connection对象不同,必须使用CommandText属性,而不能在Execute方法中使用命令文本。
       Set cmdAuthors = Server.CreateObject("ADODB.Command")

       cmdAuthors.CommandText = "Authors"

       Set rsAuthors = cmdAuthors.Execute
       这是告诉Command对象去执行一个简单的、返回一个只读记录集的命令的最简单方法。
       Execute方法也有一些可选参数,如表9-2所示:
表9-2  Command对象的Execute方法的参数及说明
参 数
说 明

RecordsAffected
受命令影响的记录数

Parameters
参数值数值

Options
命令选项,与Recordset的Open方法中的Options选项相似

       参数RecordsAffected与Options同前面解释的一样,另外也可以使用CommandType属性设置命令类型:
       Set cmdAuthors = Server.CreateObject("ADODB.Command")

       cmdAuthors.CommandText = "Authors"
       cmdAuthors.CommandType = adCmdTable
       如果不设置其他参数,也可以在Execute行上设置,必须为它们使用逗号:
       Set rsAuthors = cmdAuthors.Execute(, , adCmdTable)
       在本章后面处理存储过程时,将会看到参数Parameters的用途。
       改变光标类型
       值得注意是,使用Execute方法返回的记录集具有缺省的光标类型。这意味着这是只能前移的、只读的记录集。虽然使用Execute方法不能改变这种情况,但对这个问题有一个解决的方法。
       如果需要使用一个命令,并且要求不同的光标和锁定类型,那么应该使用Recordset的Open方法,此时Command对象作为Recordset的数据源。例如:
       cmdAuthors.ActiveConnection = strConn
       cmdAuthors.CommandText = "Authors"
       cmdAuthors.CommandType = adCmdTable

       rsAuthors.Open cmdAuthors, , adOpenDynamic, adLockOptimistic
       注意,在Open命令行中忽略了连接细节,因为连接设置在Command对象中。连接细节在命令打开前已经设置在Command对象的ActiveConnection属性中。

9.2.2 操作命令
       对于操作命令,比如那些无记录返回的更新命令,整个过程相似,只需移去设置记录集的代码:
       Set cmdUpdate = Server.CreateObject("ADODB.Command")
       strSQL = "UPDATE Titles SET Price = Price * 1.10" & "WHERE Type='Business'"

       cmdUpdate.ActiveConnection = strConn
       cmdUpdate.CommandText = sSQL
       cmdUpdate.CommandType = adCmdText

       cmdUpdate.Execute , , adExecuteNoRecords
       注意,我们在此设置了命令类型,然后在Execute行中增加了额外的设置选项。这段代码运行UPDATE命令,并且保证不会创建新的记录集。


上一页  [1] [2] 


更多
免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:烟灰缸    责任编辑:烟灰缸 
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 网站地图 | 版权申明 | 网站公告 | 管理登录 |