ASP  记录集游标和数据类型
ASP 可以用4种类型的游标(CursorType)打开一个记录集。游标决定对一个记录集可以 进行怎样的操作,还决定了其他用户可以对一个记录集做怎样的编辑,如表9-7所示。
表9-7  游标(CursorType)类型
名称
解释
adOpenForwardOnly
这种游标只能向前移动。由于这种游标功能有限,因此比较节约系统资源。
adOpenKeyset
该游标显示了其他用户对记录集所做的修改,然而无法显示其他用户增加或删除的记录。
adOpenDynamic
此类游标功能强大,但同时也消耗最多的系统资源,它可以显示由它保存的记录集的所有变化。使用此游标的用户可以看到其他用户对记录的编辑、增加和删除。这种类型的游标通过每隔一段时间从数据源重取数据来支持自己的可视性,这将会耗费很多的系统资源。
adOpenStatic
此类游标只是数据的一幅“快照”,它无法显示从它创建开始其他用户对Recordset 所做的修改。这类游标可以向前和向后移动。由于其功能简单,因此资源的需求比 adOpenDynamic要小。
在默认状态下,在打开一个记录集时,使用的是向前游标。这意味着只能使用MoveNext 方法在记录集中向前移动。另外要注意的是,一旦打开了Recordset对象实例,就无法再改变CursorType属性。但是,可以先关闭记录集,然后改变游标类型,再重新打开记录集,就可以有效地改变游标类型了。
要用一种特定的游标打开记录集,必须显式地创建这个记录集,然后再用该类型游标打开它。要做到这一点,首先要创建记录集对象的一个实例,然后,用 Open 方法使用连接对象(Connection)和一种游标类型(CursorType)打开这个记录集。在下面的例子中,用连接对象 MyConn 和一个动态游标打开了记录集 RS,代码如下所示。
<%
dim MyConn
dim connstr
'创建一个 Connection 对象
Set MyConn=Server.CreateObject("ADODB.Connection")
'用 Connection 对象连接数据库
db="/Database/bbs.mdb" '数据库文件位置
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
MyConn.open connstr
'创建一个 Command 对象
Set RS = Sever.CreatObject(ADODB.RecordSet)
RS.Open"Select * from user",MyConn,adOpenDynamic
'使用 RS 记录集
.
..
RS.Close
MyConn.Close
%>
在打开记录集时,也可以指定锁定类型。锁定类型决定了当不止一个用户同时试图改变一个记录时,数据库应如何处理,Recordset对象的4种锁定类型如表9-8所示。
表9-8  Recordset对象的4种锁定类型
名称
解释
adLockReadOnly
记录集中的记录不能被修改。
asp数据
adLockPessimistic
在编辑一个记录时,立即锁定记录集。
adLockOptimstic
只有保存记录时,才能锁定记录集。
adLockBatchOptimstic
记录只能成批地更新。
在默认状态下,记录集使用只读锁定。若要指定不同的锁定类型,可以在打开记录集时指定锁定常量。例如:
RS.Open"Select * from user",MyConn,adOpenDynamic
打开一个记录集时,还可以指定一个参数(Options),该参数用来标明打开记录集的命令字符串的类型,ADO 获得将被执行命令的有关内容,这有助于高效地执行该命令字符,例如:
RS.Open"Select * from user",MyConn,adOpenDynamic,adcmdText