主题:  [疑问]建立打开数据集的几方法的区别

东边日出

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2003/2/23 17:41:08
#12005/1/31 18:44:54
一直不明白这四个有什么大的区别..特别是第一个与后面三个那一个最相近.
不知道我标注的对不对.

sql="select * from news order by id desc"
set rs=Conn.execute(sql)
//建立打开数据集


set rs=Server.Createobject("ADODB.Recordset")
sql="select * from news order by id desc"
rs.Open sql,Conn,0,1
//可以显示数据

set rs=Server.Createobject("ADODB.Recordset")
sql="select * from news order by id desc"
rs.Open sql,Conn,1,3
//可以修改,删除数据

set rs=Server.Createobject("ADODB.Recordset")
sql="select * from news order by id desc"
rs.Open sql,Conn,3,3
//可以在打开数据库的同时修改删除数据.



不是高手

职务:普通成员
等级:3
金币:5.0
发贴:1352
注册:2002/8/23 2:27:18
#22005/2/1 8:38:57
顶一下

我也有类似疑惑,后面两个参数的任意组合都起到什么作用,斑竹请教了



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#32005/2/1 13:07:45
第一种方法打开的记录集不能返回记录的数量。objRS.RecordCount=-1,在不用记录数量时,我使用这种方法,未深入研究。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#42005/2/1 13:25:09
objRS.Open方法的语法是:

objRS.Open(Source,Connection,CursorType,LockType,CommandType)

CursorType:用于设置指针在Recordset对象中的移动方向。
   0----adOpenForwardOnly  默认值,只能向下一条记录移动
   1----adOpenKeyset  指针可以自由的上下移动。若对表的记录进行了新增、删除或更新,之前读取出来的Recordset对象可以看到更新的记录,但看不到新增或删除的记录
   2----adOpenDynamic  指针可以自由的上下移动,并可以看到表的任何变化(新增、删除、更新),所用系统资源最多
   3----当CursorLocation=3(即记录下载到浏览器端)时使用,指针可以自由的上下移动,但看不到表之后所做的任何变化,因为已经和服务器端的数据库中断连接。

LockType:设置能否将记录写入表
   1----adLockReadOnly  默认值,记录只读,不允许更改
   2----adLockPessimistic  当开始编辑某条记录时,便锁定此记录,待编辑完毕并调用Update方法进行更新之后,再解除锁定
   3---adLockOptimistic  只有在调用Update方法进行更新的时候才锁定记录。若我们在编辑某条记录后没有调用Update方法进行更新,而是继续移往其他记录做编辑,ADO会自动调用Update方法进行更新,若要取消更新,可以使用CancelUpdate方法。这种方法的效率虽然较2好,但可能有数据不同步的问题。
   4----adLockBatchOptimistic  允许以批次的方式更改记录。



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#52005/2/1 16:33:26
建议在编写代码时不要使用 0-4 这种 magic number.

先包含 adovbs.inc 或在 global.asa 中加载 ado typelib, 即可随时使用友好的常量名称



东边日出

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2003/2/23 17:41:08
#62005/2/2 9:53:15
sql="select * from news order by id desc"
set rs=Conn.execute(sql)

那这个与后面这几个是什么关系呢.



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#72005/2/2 9:59:08
东边日出在上个帖子中说
引用:
sql="select * from news order by id desc"
set rs=Conn.execute(sql)

那这个与后面这几个是什么关系呢.
CursorType 和 LockType 均取缺省值



18687874

职务:普通成员
等级:1
金币:0.0
发贴:1
注册:2005/1/31 11:13:51
#82005/2/3 0:25:10
帮顶一下,让更多人学习
今天终于明白后面两个参数的意义了