动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Visual Basic教程 ]的信息

本月文章推荐
.访问MicrosoftJet数据库---用Mic.
.如何利用VB编写NT服务程序.
.VB创建位图菜单.
.在你的应用程序里实现简单的加密.
.认识一下VB6.0的编程环境.
.用VB实现队列播放MP3.
.VB数组小技巧一则.
.在TextBox中限制只能输入数字.
.如何取得计算机的所有字型.
.在数据库中不用EOF以加快记录循环.
.自动开始上次关机时关闭的应用.
.一个实用的VB屏幕程序.
.VBCOM基础讲座之发布组件.
.VisualBasic控件的使用二.
.制作带有动画和声音的屏幕保护程.
.在VisualBasic中终止Windows95.
.VB中如何实现文本查找功能.
.利用VB6.0设计屏幕保护程序.
.大小写互换的三种方法.
.菜单项的动态装入.

页面锁定--多客户环境下VB数据库编程之(5)

发表日期:2006-2-27 |


从理想的角度来说,如果能对记录进行锁定,则会给多用户程序带来极大的灵活性。然而遗憾的是,MicrosoftJet引擎不支持真正的记录锁定,而是使用页面锁定。页面锁定只锁定包含当前正在编辑的记录的页,MicrosoftJet进行访问和锁定的页的大小为2K(2048个字节)。在使用页面锁定时,其他用户可以读取锁定页中的数据,但不能对数据进行修改。在这种锁定方案中,每次将锁定多个记录,锁定的记录的个数取决于每个记录的大小。例如,如果每个记录的长度为230个字节,则每次只能锁定9个记录;而如果记录的长度为30个字节,则每次可锁定68个记录。

锁定模式。页面锁定分为两种模式,即保守式锁定和开放式锁定,它确定了MicrosoftJet如何对数据进行锁定。当编写在页面级别上锁定数据的应用程序时,必须确定要使用哪种锁定模式。页面锁定可以通过两种方法来设置,即LockEdits属性和OpenRecordset方法中的lockedit5参数。

1.用LockEdits属性指定锁定模式。锁定模式可以通过LockEdits属性来指定。该属性可用于各种Recordset对象,包括动态集、快照、表及动态类型的Recordset对象。LockEdits属性是一个布尔值,当把该值设置为True(缺省)时,将对记录集进行保守式锁定,即在执行Edit方法时锁定2K的页面:如果把该属性设置为False,则对记录集进行开放式锁定,即在执行UPdate之前不锁定要更新的记录所在的2K页面。如下面的例子:

DimrstTemPAsReCordset
……
rstTemp.LockEdits=True

说明:a.锁定页面后,其它用户不能对正在编辑的记录所在页面进行修改,但可以读取锁定页中的数据。在其它用户锁定页面后,如果再把LockEdits属性设置为True,则会出错。b.如果把LockEdits属性设置为False,且其它用户已锁定页面,则其后的用户在使用Update时将会出错。c.当与Microsoft连接的ODBC数据源一起操作时,LockEdits属性被设置为False,即开放式锁定。

2.用OpenRecordset方法指定锁定模式。我们已多次使用过OpenRecordset方法,该方法的格式如下:

Setrecordset=object.OpenRecordset(type,options,lockedits)

其中第三个参数,即lockedits,用来指定锁定模式或以只读方式打开记录集。该参数可以取以下5种值:

(1)dbReadOnly:以只读方式打开记录集。注意,在options参数中也可以使用dbReadOnly,但不能同时使用,否则会产生错误。

(2)dbPessimistic:用保守式锁定模式打开记录集,一旦使用Edit方法,将立即锁定正在编辑的记录所在的页面,直到执行Update方法后才释放对该页面的锁定。

(3)dbOptimistic:用保守式锁定模式打开记录集,在执行Update方法前不锁定正在编辑的记录所在的页面。

(4)dbOptimisticValue:基于行值使用开放式并发(仅ODBCDirect工作区)。
(5)dbOptimisticBatch:允许开放式更新(仅ODBCDirect工作区)。

保守式锁定和开放式锁定。

1).保守式锁定。保守式锁定也称为悲观锁定。设置保守式锁定后,只要对某个记录使用Edit方法,就自动锁定该记录所在的页面,直到显式地提交或取消这个记录的变更(例如执行UPdate方法)后,才释放对该页面的锁定,并把数据写入文件中。保守式锁定是Recordset对象的缺省锁定方式。保守式锁定的主要优点是,获得锁定之后,只要记录还被锁定着,就可以防止其它用户修改该记录中的数据,因此不会发生任何锁定冲突。另外,由于一个用户不能在另一个用户开始编辑记录之后改变它,所以,保守式锁定也是保证应用程序读取最新数据的唯一方法。保守式锁定的缺点是,在编辑和锁定该记录的过程中,包含该记录的整个页面都被锁定。当锁定时间较长时,可能会给其它用户造成不必要的麻烦。例如,用户设置保守式锁定后,开始编辑一个记录,并在记录被锁定期间离开了计算机(例如出去办事),这不仅锁定了用户正在编辑的记录,而且锁定驻留在该锁定页面内的其它记录,使其它用户长时间内无法编辑页面中的记录。

2).开放式锁定。开放式锁定也称乐观锁定。使用开放式锁定时,MicrosoftJet引擎仅在试图用Update方法提交记录变更时才锁定页面,完成更新操作后立即释放对页面的锁定。由于锁定仅在应用程序试图提交变更时发生,因此能使锁定的时间最短,使其它用户只在锁定生效的较短时间内不能访问该页面。这是开放式锁定的主要优点。开放式锁定的缺点是:当用户正在编辑记录时,不能保证更新是否会成功。如果另一个用户改变了第一个用户正在编辑的记录,那么依赖于开放式锁定的更新将会失败。例如,假定张三和李四正在编辑同一个记录,张三开始以开放式锁定编辑某个客户记录。由于张三使用的是开放式锁定,并没有真正锁定记录,所以不能禁止李四试图编辑相同的记录。在李四编辑相同的客户记录时,他不知道张三正在编辑该记录,并且也没有看到最新的数据。当张三试图在李四编辑相同的客户记录时存储他的变更,就会产生一个错误。对于大多数数据库应用程序来说,可能要选择开放式锁定,因为其它用户修改或删除本人正在使用的记录的可能性要小于试图访问已被锁定的页面上记录的可能性。但是,如果某个应用程序中有多个用户同时访问和编辑记录,则应使用保守式锁定,以确保在执行编辑期间记录不被其他人修改。在这种情况下,应注意不要使记录锁定的时间过长。

3).释放锁定。如前所述,在执行Update方法后,将自动释放页面锁定。但是,释放记录锁定是一种后台进程,有时候,其它操作发生得很快,以至于数据库来不及处理该进程。如果正在开发一个数据输入密集型的应用程序,则可能需要暂停应用程序的处理,这可以通过MicrosoftJet数据库引擎的Idle方法来完成。Idle方法挂起数据处理,启用MicrosoftJet数据库引擎执行其它操作,诸如内存优化或内存页超时等(仅MicrosoftJet工作区)。该方法用于DBEngine对象,格式如下:

DBEngine.Idle[dbRefreshCachel

在多用户环境中,用Idle方法可以使MicrosoftJet数据库引擎执行后台任务。在一般情况下,仅当没有任何操作(包括移动鼠标)发生时,才释放读锁定并更新本地动态集类型的Recordset对象中的数据。如果定时地使用Idle方法,则MicrosoftJet可以释放不必要的读锁定,以捕获后台处理任务。Idle方法有一个可选的参数,即dbRefreshCache,如果使用该参数,则可强制挂起写入.MDB文件,并用.MDB文件中的最新数据刷新内存。->

上一篇:记录集锁定--多客户环境下VB数据库编程之(4) 人气:3238
下一篇:共享数据的锁定--多客户环境下VB数据库编程之(3) 人气:3210
浏览全部Visual Basic的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-2 OpenPNE中文 v2.12.5 for win 中
2008-12-2 谷秋精品课程软件课程版 v2.3
2008-12-2 晴天电影系统(带一键迅雷/自定义
2008-12-2 QQip138闪字程序
2008-12-2 SmartWeb企业智能建站系统 v1.0.2
2008-12-2 梦想不死个人主页 v2009
2008-12-2 开良ASP小偷程序生成器 v1.1
2008-12-2 toolxp.cnalexa世界排名查询 php
2008-12-2 腾讯留言板 v1.3
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成