刚接触ado时,没有感觉到游标有什么作用,所以没有怎么关注它,但是做学生管理系统时遇到了一个问题就是我使用recordset标签属性Bookmark总是会弹出:
花了一会时间终于找到了解决办法:
打开记录集的时候就会涉及到游标
例如:
dim Rs as ADODB. Recordset
dim cnn as ADODB.Connection
rs.open trim$(SQL),cnn,adopenkeyset,odlockoptimic
后面在定义一下cursorlocation属性
例:rs.cursorlocation=aduseclient
然后就能用了,这是因为如果不定义,一般默认的是aduseserver,无法实现该功能,是因为我的数据库sqlserver2000的问题!因为我使用sqlserver2008可以直接使用,不用申明cursorlocation
下面就总结了一下在结果集使用游标
一.作用:
1.控制记录定位
2.控制其他用户对数据库所作的更改的可视性
3.控制数据可更新性
二.
1.cursorlocation 游标位置
类型 | 作用 |
adUseNone | 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现) |
adUseServer 默认值 | 使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能 |
adUseClient | 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 |
注:一般我们没有定义时,使用的都是默认值,有时都会遇到问题-有些功能无法使用,所以我们要注意了.
2.cursortype 游标类型
游标类型就涉及到recordset的open方法了.
recordset.open source,activeconnection,cursorType,lockType
source:指定command的对象变量名,sql语句,表名,存储过程调用
activeConnection:connection变量名,或字符串,包含connectionString参数
cursorType(游标类型):
类型 | 作用 |
adOpenForwardOnly(=0) | 只读,且当前数据记录只能向下移动 不支持分页、BookMark |
adOpenStatic(=3) | 可读写,当前数据记录可自由移动,可看到新增记录 |
adOpenKeySet(=1) | 只读,当前数据记录可自由移动 |
adOpenDynamic(=2) | 可读写,当前数据记录可自由移动 |
lockType(锁类型)
类型 | 作用 |
adLockReadOnly(=1) | 缺省锁定类型,记录集是只读的,不能修改记录 |
adLockPessimistic(=2 | 悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。 |
adLockOptimistic(=3) | 乐观锁定,直到用Update方法提交更新记录时才锁定记录 |
adLockBatchOptimistic(=4) | 批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。 |
注:
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。对于一般的使用,乐观的锁定可能是最好的选择, 因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。
游标的功能和运用还有很多知识,自己只懂了这么一点,应该还有待于继续去学习!!