首页 | 免费域名 | 个人服务器 | 一流信息监控拦截系统 | 虚拟主机知识库 | ASP 空间 | ASP技术大全 | 下载中心 | 客户服务中心
  7i24 > ASP技术大全 > ASP与数据库 >
    7i24 .Com  
  Recordset Cursors: 选择正确的游标

7i24.Com不停为您服务
Recordset Cursors: 选择正确的游标

如果你在ADO里显式地创建了一个recordset对象,你就可以制定你想使用的游标类型. 下面的代码可以用来显式地创建recordset:

Set rs = Server.CreateObject("ADODB.Recordset")

你还可以隐式地创建一个recordset对象,大部分时候开发者们都是这么做的. 例如我们运行了下面这些代码:

Dim rs, conn
Set conn = Server.CreateObject("ADODB.Connection")

'Open the connection using an Application-level
'connection string conn.Open
Application("Connection_String")

Set rs = conn.Execute("SELECT * FROM pubs")

当最后一行程序被执行后,你就实实在在地拥有了一个recordset对象,并用rs来引用它. 这个recordset对象由ADO/ASP隐式地创建的,它的游标类型是forward-only.
然而,当你显式地创建了一个recordset对象,你就能用如下的代码来设置你所想使用的游标类型:

rs.CursorType = 'Enter cursor type here

游标类型可以是以下四种类型之一:

Forward-only
Static
Keyset
Dynamic
Forward-only型游标占用最少的资源,因而能得到最高的性能. 它也是recordset缺省的游标类型,唯一的缺点是只能单向移动游标. 你只能从头到尾单向遍历记录集,亦即只能使用MoveNext这样的方法,而不能使用MovePrev. 比方说,如果你企图在一个forward-only的recordset里使用MovePrev的方法,你将得到一个错误提示,它告诉你无法利用消防水龙带型的游标来完成你的操作. (所谓的消防水龙带型游标,是指记录集中的记录就是水龙带里的水一样,只能朝一个方向运动.) 要使用一个forward-only型的游标,你应该键入:

rs.CursorType = adOpenForwardOnly

注意: 本文假设你在你的每一个ASP页面中都包含了adovbs.inc
(http://yanh.163.net/doc/advdb/adovbs.zip)这个文件,如果你需要这个文件,你可以点击上面的超链接下载.

第二种游标类型是static游标. 它允许你向任何一个方向移动游标,但如果用户在查看数据集同时,数据集发生了更新,删除或添加的操作,它将无法实时反映数据集的变化. 它就如同数据集在用户在请求数据的时刻的映像(也叫快照,snapshot). 如果数据集的游标是static型的,你可以使用各种各样的遍历数据集的命令,诸如
MoveFirst,MovePrev,MoveLast,RecordCount等等. 你可以键入下面的程序来使用static型游标:

rs.CursorType = adOpenStatic

Dynamic和Keyset型游标可以实时查看数据的更动. 但这只是在VisualBASIC应用程序起作用,对于Web页面则一点儿用都没有. 一旦用户发出数据请求,就同static型游标一样数据集中得到那一时刻的数据映像. 如果用户不刷新他们的浏览器页面,想持续地反应数据的变化是不可能的(除非你去钻研一些IE 4.x及更高版本的新增的数据特性). 由于Web浏览方式的特殊性,你可能根本用不到Keyset或Dynamic型的游标,它们比Static或forward-only型的游标更贪婪地攫取系统的资源. 如果你需要各方向遍历你的数据集,或是想得知数据集中的记录数,就采用Static型游标,否则就用
forward-only型的.

如果你只需要单向遍历一个数据集,那么你就用forward-only型的游标吧,它将节省系统资源,减少查询时间. 总之,你在创建recordset时,应该选择合适的游标!



  2002年1月8日  阅读 568 次  发送此页给朋友  来源:    版权争议  删除

相关文章:   近期热点:
§RecordSet的CursorType属性
§RecordSet的Locktype属性

上一篇: 数据库设计经验谈
下一篇: 获得删除纪录的个数
返回上一层...
搜索:

(C)2004-2022 7i24.Com 保留所有权利