Recordset.open [Source][,ActiveConnection][,CursorType][,LockType][,Options ]
各参数的含义是:
Source : 可以是一个SQL查询、数据表或存储过程
ActiveConnection: 可以是一个已打开的连接,或连接字符串
CursorType:游标类型,定义如下
0(adOpenForwardOnly): 只能在Recordset的记录中向前移动,但速度最快。
1(adOpenKeyset):可以在Recordset中任意移动,其他用户所做的记录修改可见,但其他用户添加的记录不可见,删除的记录字段值不能被使用。
2(adOpenDynamic):可以在Recordset中任意移动,其他用户增、删、改的记录都可见,但速度最慢。
3(adOpenStatic):可以在Recordset中任意移动,其他用户增、删、改的记录都不可见。
LockType:并发控制
0(adLockReadOnly):recordset的记录为只读
1(adLockPessimistic):只要保持Recordset为打开,别人就无法编辑该记录集中的记录.
2(adLockOptimistic):当update recordset中的记录时,将记录加锁
3(adLockBatchOptimistic):以批模式时更新记录时加锁
Options:指定source传递命令的类型
1(adCmdText):SQL语句
2(adCmdTable):数据表的名字
4(adCmdStoredProc):存储过程
8(adCmdUnknown):未知类型
rs.Open sql, conn, A, B
A 代表游标类型:
adOpenForwardOnly(0)
前滚静态光标。这种光标只能向前浏览记录集,比如用 MoveNext 向前滚动,这种方式可以提高浏览速度。
adOpenKeyset(1)
其它用户对数据库记录的“改”会反映到当前记录集上;其它用户对数据库记录的“增、删”不会反映到当前记录集上。当前数据记录可自由移动。
adOpenDynamic(2)
动态光标。其它用户对数据库记录的“增、删、改”会反映到当前记录集上。当前数据记录可自由移动。
adOpenStatic(3)
静态光标。为记录集产生一个静态备份,其它用户对数据库记录的“增、删、改”不会反映到当前记录集上。当前数据记录可自由移动。
B 代表锁定类型:
adLockReadOnly(1)
缺省锁定类型,记录集是只读的,不能修改记录。
adLockPessimistic(2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录,这是最安全的锁定机制。
adLockOptimistic(3)
乐观锁定 ,直到用 Update 方法提交更新记录时才锁定记录。
adLockBatchOptimistic(4)
批量乐观锁定,允许修改多个记录,只有调用 UpdateBatch 方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间, 数据在这段时间被更新。这减少了资源的使用。