| 域名空间 下载中心 社区论坛 信息公告 MY小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
共享数据的锁定--多客户环境下VB数据库编程之(3)http://www.iyit.net 日期:2006-5-22 17:00:05 来源:网络转载 点击: |
·独占模式:阻止其他所有用户访问数据库,这是限制最大的模式,上一节已介绍过。 ·记录集锁定:即锁定Recordset对象的基本表,用读表锁定、写表锁定或两者都用。 ·页面锁定:锁定含有正在编辑的数据的页面,其长度为2048个字节(2K)。这是限制最小的模式。 在应用程序中用哪一种模式来锁定对象,主要看所需要的并发级别。例如,如果想使对象在任何时候都可用,则可使用页面锁定,因为它是限制最小的级别。如果应用程序要保证数据库中的大多数或所有数据都可访问,则应选择独占模式,这种模式确保应用程序独占数据库的访问。注意,这三种级别可以结合使用。例如,假定有一个订单系统,则可以用页面锁定来控制订单表的锁定,使订单接收者之间的并发程度最高。在一天结束时用记录集锁定来锁定汇总表,这个汇总表要用汇总数据来更新。最后,可以在夜间使用独占模式来整理数据库。 1.共享模式与独占模式 如前所述,独占模式是打开数据库限制最大的方式,它阻止其他所有用户打开该数据库。这种模式常用于数据库管理或数据库的批量修改,例如修复或整理操作以及改变数据库的结构等。在单用户环境中访问数据库时,通常以独占模式打开数据库,这可以提供更好的性能,因为Microsoft Jet不必对对象进行锁定和解锁,也不必刷新高速缓存器。但是,当在多用户环境中使用应用程序时,通常以共享模式打开数据库。 (1).以共享模式打开数据库 为了实现记录集锁定,必须以共享模式打开数据库。当以共享模式打开数据库时,可能会有多个用户同时对数据库进行访问,在这种情况下,Microsoft Jet将处理各用户间试图编辑相同记录的冲突。前一节中讲过,当用OpenDatabase方法打开数据库时,只要把Options参数的值设置为False,就能以共享模式打开数据库。下面举一个例子。 编写一个Function过程,调用该过程,可以根据需要用共享模式或独占模式打开数据库。过程如下: Function OPenDatabaseX(dbs As Database,strDBPath As String,blnExclusive As Boolean) As Integer '关闭错误捕获 On Error Resume Next '打开strDBPath所指定的数据库。如果blnExclusive为True,则以独占模式打开数据库:否则,以共享模式打开数据库 Set dbs=OpenDatabase(strDBPath,blnExclusiVe) Select Case Err CaSe 0: OPenDatabaseX=0 Case 3033: OpenDatabaseX=3033 Case 3343: OpenDatabaseX=3343 Case 3044: OpenDatabaseX=3044 Case 3024: OpenDatabaseX=3024 Case Else: OpenDatabaseX=-l End Select End FunCtion 该过程以共享模式或独占模式打开一个数据库,由参数blnExclusive决定。如果blnExclusive参数为True,则数据库以独占模式打开;否则,数据库以共享模式打开。在该过程中,用错误处理程序来检测错误,并根据过程调用的执行情况返回错误代码。该过程有3个参数,分别为数据库对象变量名、数据库名(包括路径)和模式开关。为了调用这个过程,应先用Dim语句声明一个Database对象变量,然后把这个对象变量和数据库的名字(strDBPath)一起传送给OpenDatabaseX过程。在调用OpenDatabaseX的代码时,应当检查OpenDatabaseX的返回值,看是否有错误发生,然后根据发生的错误采取相应的措施。在窗体上画一个命令按钮,然后在下面的事件过程中调用过程OpenDatabaseX: PnvateSubCommandl_Click() Dim a As Integer Dim MvDbs As Database a=OpenDatabaseX(MyDbs,"c:\Vb50\biblio.mdb",False) Select Case a Case 0: MsgBox "调用成功" Case 3033: MsgBoxError(3033) Case 3343: MsgBOxError(3343) Case 3044: MsgBoxEnor(3044) Case 3024: MsgBox Error(3024) Case Else: MSgBox Error(3024) End SeleCt End Sub OPenDatabaseX 过程的返回值是一个整型数,它是调用时产生的错误代码。当返回值为0时,表示调用成功,显示一个信息框。上述事件过程以共享方式打开一个数据库,如果把OpenDatabaseX的第三个参数改为True,则以独占方式打开该数据库。如果在调用时出错,则将返回错误代码,在事件过程中用Error函数显示相应的信息。例如,假定把数据库名改为:e:\vb50\biblio.mdb。则由于该数据库的路径不对而出错,产生出错信息。 (2).使用只读模式 只读模式是共享模式的特殊形式。当以只读模式打开一个数据库时,不能改变数据库的数据或对象。但是,其他用户可以改变数据,不要把这种模式与在操作系统级以只读模式打开文件相混淆。下面的代码以独占的只读模式打开一个数据库: Set dbsOrdEntry=OpenDatabase ("OrdEntry.mdb",True,True) 如果以共享的只读模式打开一个数据库,则应使用下面的代码: Set dbsOrdEntry=OpenDatabase ("OrdEntry.mdb",False,True) 注意,以只读模式打开数据库时,并不禁止共享表类型的锁定或读锁定;因此,以只读模式打开数据库不能防止锁定冲突的发生。限制程序为只读方式的另一种办法是为记录集使用快照,快照类型的记录集总是只读的。当基表中的数据不需要经常修改时,可以使用快照。由于快照存放在内存中,因此其操作比使用表或动态集的相同操作速度要快。但是,由于快照的内存需求和装入内存时要花费一定的时间,最好把快照用于返回记录在200以内的查询中。 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:数据访问控制--多客户环境下VB数据库编程之(2) 下一篇:页面锁定--多客户环境下VB数据库编程之(5) 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||