<marquee width=358>欢迎来到月影社区,希望这里可以成为您美丽的梦幻花园,如果你觉得这里好请分享给您的朋友!- wf66.com</marquee> 将月影社区设置为您的首页将月影社区地址加入到您的收藏栏
月影社区时尚音乐音乐查询IP手机许愿之瓶最新更新文件加密访客留言爱音乐
欢迎您,首页 >> 信息中心 >> ADO如何锁定RecordSet的记录呢?

请输入您关键字:


ADO如何锁定RecordSet的记录呢?

推荐查看本文HTML版本


ADO如何锁定RecordSet的记录呢?

 前面介绍使用Recordset(记录集合)对象的方法如下:
Set rs = Server.CreateObject("ADODB.Recordset")
 

 rs.Open SQL指令, Conn, 1, 1 ‘读取

 rs.Open SQL指令, Conn, 1, 3 ‘新增、修改、或删除

到底rs.Open后接的第三个参数1和第四个参数是什么意思呢?为何第四个参数在读取时要用1,新增、修改、或删除时要用3呢?
 第三个参数表示cursor类型;
 第四个参数表示RecordSet的锁定型态。
 详细介绍如下:
 

 RecordSet的锁定

 当开启Recordset对象时,您也可以用LockType属性指定锁定的型态:



1:唯读(ReadOnly),不允许更新,为预设值。
2:悲观锁定( Pessimistic lock),在编辑Recordset资料或使用AddNew方法,一开始执行就立即锁定此记录或包含资料记录的资料页,并维持锁定直到使用Update方法将变更写回到资料库为止。
3:乐观锁定(Optimistic lock),使用Update方法将变更写回到资料库时才锁定此记录。
4:批次乐观锁定(Batch Optimistic lock),使用UpdateBatch方法将多笔变更的记录批次写回到资料库时,才锁定此批记录。

当您使用悲观锁定(Pessimistic Lock)时,一旦编辑Recordset资料或呼叫了AddNew方法时,就会锁定包含目前编辑RecordSet的资料对应页,直到明确地确认(Commit)或取消这个RecordSet的变更后,它才会释放这个锁定。
悲观锁定的主要优点,是取得锁定之后,只要RecordSet还被锁定着,就不会发生任何锁定冲突。由于一个使用者开始编辑RecordSet后,其他使用者就无法改变它,所以悲观锁定是保证应用程式能读取到目前最新资料的唯一方法。
悲观锁定的缺点,是在编辑和锁定该RecordSet当中,包含该RecordSet的整个资料对应页都会被锁定。如果当使用者开始编辑和锁定RecordSet后,在RecordSet被锁定期间过了很久才明确地确认(Commit)或取消这个RecordSet的变更,就将产生一个问题,这不仅锁定了使用者正在编辑的RecordSet,而且还可能会锁定存在该被锁定资料对应页内其它的RecordSet。
当您使用乐观锁定(Optimistic Lock)时,只会在使用Update方法变更
RecordSet时,才锁定该资料对应页,所以能使锁定的时间为最短,这是乐观锁定的主要优点。
乐观锁定的缺点,是当使用者开始编辑RecordSet时,无法确定更新是否会成功。如果另一个使用者改变了第一个使用者正在编辑的RecordSet,那么建立在乐观锁定的更新将会失败。
譬如甲和乙都在编辑相同的RecordSet,若甲开始以乐观锁定编辑一个
RecordSet,因为甲使用的是乐观锁定,并没有真正锁定该RecordSet,所以无法禁止乙尝试编辑相同的RecordSet。
于是乙开始编辑相同的RecordSet。但是,乙也不知道甲正在编辑该
RecordSet,也看不到最新的资料。
因为乙也正在编辑该资料录,所以当甲尝试储存他的变更时,就会收到一个错误。
当您使用异动(transaction)功能时,乐观锁定将会转换成悲观锁定。因为在你做交易确认(Commit)之前,异动一直会做写入锁定
 (Write-Lock)的功能,所以转换成悲观锁定。
乐观更新(optimistic update)是逐笔记录进行的。您可以让使用者能在自己的电脑中,暂存(cache)多笔记录的变更,然后使用批次处理,一次把这些多笔变更的记录传给伺服器进行更新,这样效率比较高。这个方式称为批次乐观更新
(Batch Optimistic Update)。
批次乐观更新使用的锁定方式为批次乐观锁定(Batch Optimistic lock),使用UpdateBatch方法将多笔变更的记录批次写回到资料库时,才锁定此批资料记录。
在Recordset对象上设定锁定时,如果锁定失败,则会产生错误。
譬如有另一个使用者以锁定的模式,开启了Recordset对象时,那么当您尝试锁定该Recordset对象时,就会发生错误。
 错误可能为:
 3260:RecordSet被锁定。在您遇到这个错误时,可以先等待一下,然後再重试一次。 3262:无法锁定资料表 <name>,目前正被使用者<name>在机器<name>上使用。先等待一下,然后再重试一次。
 3197:RecordSet的资料在被开启之后发生了改变。因为您和另一个使用者尝试同时改变同一笔资料,可以再试一下重新读取该RecordSet,以取得最新的资料。
 3186:无法储存,目前正被机器 <name> 上的 <name> 使用者锁定。当一个使用者尝试更新一资料对应页,而且该页被另一个使用者锁定时,就会发生这个错误。要处理这个错误,则先等待一会儿,然后重新储存该RecordSet。
 3260:无法更新,目前,被机器 <name> 上的使用者 <name> 锁定。当您编辑
Recordset资料或呼叫了AddNew方法,而该资料对应页包含有被锁定的记录时,就会发生这个错误要处理这个错误,先等待一会儿,然后再一次储存该RecordSet。或者您可以通知遇到这个问题的使用者,并允许使用者选择是否要再重试这个操作。

cursor

cursor(资料指标)是一个指标或指标的集合,它指向根据某条件从资料库中取回的资料。cursor的特性如下:
[月影社区 http://wf66.com/]

可以表示单一资料表中的部份或全部RecordSet。
可以表示多资料表的连结(join)中的部份或全部RecordSet。
可以表示没有RecordSet。
在cursor层次上或者在资料栏层次上,cursor可以是只读的或可更新的。
cursor既可以双向移动(表示在RecordSet中能向前或向后移动),又可以是仅向前移动。
cursor可以存在用户端的电脑中,也可以存在服务器上。


cursor所在位置

cursor需要暂存的资源来储存资料,这些资源为RAM、虚拟记忆体、暂存档或资料库。如果这些资源在用户端的电脑中,cursor就称为client-side(客户端)
cursor。对於这种类型的cursor,服务器将cursor所代表的资料和cursor自身需要的资料传到用户端,由用户端电脑来管理暂存的资源。
另外一种类型的cursor,称为server-side(服务器端)cursor。对於这种类型的cursor,使用
 服务器上的暂存资源来管理RecordSet对象。对於server-side cursor,只有由cursor选中的RecordSet才透过网路传送给用户端的电脑。因此在网路通讯或频宽出现问题时,使用这种类型的cursor在性能上有很大的提升。但是,因为需要服务器上的RAM和磁碟空间等资源,因此必须保证服务器有足够资源来管理所有客户端电脑请求的cursor。
 CursorLocation属性,可以选择cursor的所在位置,是在用户端电脑还是服务器上:


3:使用用户端cursor。此选项对小的RecordSet效果较好,但对大的结果集,其性能迅速下降。
2:使用服务器cursor。对於大多数的大型作业来说,这种类型的cursor有较好的性能。


cursor类型
 当开启Recordset对象时,可以在CursorType属性指定不同的cursor类型:


0:Forward-only(只向前):只能向前移动,这是缺省值。
1:Keyset(索引键集)
2:Dynamic(动态)
3:Static(静态)

如果应用程式只需要读取一个RecordSet,并不需要做新增、修改、删除的动作,那么用Forward-only(只向前)的Recordset对象,可以明显提高应用程式的执行性能。
 需注意使用Forward-only(只向前)的Recordset时,下面的方法和属性将无法使用:

.Bookmark属性
.Clone方法
.Move方法
.MoveFirst方法
.MoveLast方法
.MovePrevious方法
.OpenRecordset方法


ADO如何锁定RecordSet的记录呢? 2006-8-28
转到本主题第:[ 1 ]
相关评论

暂无评论

总计0页 [ ]上一页 下一页
发表评论(揪错)
呢称: * 您尚未登陆,请登录
来自: *
内容:
 

(为防止非法信息,您的言论提交后需要审核才能正常显示)

文学
精品文萃 情感天地 言情小说
网络小说 玄幻小说 悬疑恐怖
武侠小说 古典品谈 外国名著
儿童文学 会员原创 学习园地
杂谈其它
娱乐
爆笑网文 星座占卜 影音动漫
娱乐新闻 影视剧情
诗词
青竹诗歌 个人诗集 宋词雅赏
全唐诗录
新闻
国际新闻 国内新闻 科技新闻
体育新闻
图片
图文专区 艺术长廊 桌面壁纸
精品素材 像素图片
漫画
单幅漫画 爆笑四格 连环漫画
电脑
电脑入门 图形图像 编程开发
游戏
我爱Q宠 最新攻略 最新秘籍
游戏新闻 技巧心得
经济
帕格节电 财经资讯 股市证券
生活
百科知识 外语学院 潮流时尚
健康医疗 宠物花卉 汽车地带
行走天下
美食
面食甜点 家常菜品 药膳食疗
美食天下 烹饪技巧 松辽风味
燕京风味 巴蜀风味 滇黔风味
赣江风味 徽皖风味 闽台风味
齐鲁风味 中州风味 岭南风味
荆楚风味 三晋风味 淞沪风味
苏扬风味 潇湘风味 钱塘风味
民族风味 素斋仿荤
营销
管理杂谈 谈经论道 培训激励
经营战略 职场生涯 公关交际
关于我们版权声明本站导航友情连结作品演示 TOP↑
本论坛言论纯属发表者个人意见,与£月影社区£立场无关。 皖ICP备16024038号-1
禁止发布任何色情/政治/反动相关信息让我们共同来营造一个属于我们的梦幻家园
Copyright ©2001-2006 MoonShadow. All rights reserved.  Version 4.0  Licence 2006.4.2
建站天数:7187天 本站基于ASP+JS构建,完全自主开发,版权归属月影社区 管理员QQ:23165062 Time:62ms