机房收费系统错误记录——AdLockOptimistic

 

机房收费系统最近才可以敲,不过刚开始,就遇到一个难题。

 

当我往数据库的表里更新记录时,老是更新不成功,对于更新代码的反复修改,仍旧不能解决问题,这个问题困扰了我接近两天,于是找了几个同学来解决都未果,最终在徐恕的帮助下,找到了原因。罪魁祸首是锁定类型AdLockOptimistic。

 

我的这个错误属于“打开游标”类型的错误。所以就将这块知识点进行下梳理,希望对大家能有所帮助。

 

打开游标的语法是:

recordset.Open Source, ActiveConnection, CursorType, LockType, Options

 

现在我就拿我们的机房收费系统里的打开游标的代码来解释一下。

Set rst = NewADODB.Recordset

rst.Open Trim$(SQL),cnn, adOpenKeyset, adLockOptimistic

 

Source 一般是可选的,包括变量名、SQL语句、表名、存储过程调用或持久Recordset文件名,而我们的代码Trim$(SQL)就是一个SQL语句。

 

 ActiveConnection也是可选的,包括Connection连接对象变量名,比如说我们代码中的Cnn,还包括字符串ConnectionString参数。

 

CursorType可选的,确定提供者打开RecourdSet时应该使用的游标类型。我们代码里的adOpenKeyset就属于打开键集类型游标,游标类型还包括其它三种:AdOpenForwardOnly(这种一般是默认的)打开仅向前类型游标,AdOpenDynamic打开动态类型游标、AdPenStatic打开静态类型游标。

 

LockType也是可选的,确定提供者打开 Recordset 时应该使用的锁定类型,如果不进行设置的话,一般默认AdlockReadOnly ,是只读的不能改变数据的,所以一般称为缺省锁定类型;还包括AdlockPessimistic又叫悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录,只要编辑一开始,则立即锁住记录;还有一个与之相对的称为乐观锁定的AdlockOptimistic,用法是直到用Update方法提交更新记录时才锁定记录;还有最后一个批量乐观锁定AdlockBatchOptimistic,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

 

对LockType的选择,当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。 对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。

 

而最后的这个Options,是用户指示提供者如何计算Source参数的,在我们的的系统里没有涉及到,有兴趣的同学可以去了解下。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值