全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NetWare下的FoxPro网络编程网络环境是一个多用户环境,数据库在网络上的应用首先要解决的一个问题就是如何协调不同用户在网络上的共享冲突问题。例如,一个数据库文件,用户甲打开它进行查询工作,同时用户乙打开它进行修改,这就发生了混乱。一般来说,任何网络系统,任何数据库系统,共享文件都不允许在某一时刻有两个以上的用户同时修改它,否则将产生混乱。解决此类问题,可以利用数据库系统的文件或记录加锁予以解决。下面以NetWare操作系统为例说明如何利用FoxPro数据库系统开发网络应用程序。在Foxpro数据库系统,执行某些修改命令时,系统会自动对文件或记录加锁,当操作完成后,加锁自动解除。此外,程序设计人员也可以对文件或记录进行人为的加锁、解锁处理,以防止出现混乱。在网络上的数据库处理中,经常会遇到死锁。例如用户甲锁住了记录A而去操作记录B,而此时正好用户乙锁住记录B而去操作记录A,出现双方无限期的等待对方的现象,形成死锁,这在网络上的数据库操作中经常遇到。下面以一个例子说明。在一个数据库系统里,两个进程A与B的程序如下:A.PRG B.PRGON ERROR DO ERR1 ON ERROR DO ERR2SET EXCLUSIVE ON SET EXCLUSIVE ONSELE A SELE A USE FILE1 USE FILE2 SELE B SELE BUSE FILE2 USE FILE1 假设A与B的错误处理程序ERR1.PRG与err2.prg结构相同:IF ERROR()=108RETRYELSERETURN TO MASTERENDIF这里108号错误表示文件被另一文件使用,不能打开。很显然,上述双方将无限期地等下去,出现死锁。形成死锁的原因主要有以下几种:1) 程序对资源的封锁是采取独占方式,不允许他人对同一数据资源再封锁极其操作。 2) 已经对某些资源设置了封锁机制,在执行过程中还对新的资源发出封锁请求而不释放原有资源。 3) 已经封锁的资源被某程序挂起,但却被授予其他程序使用。 4) 允许程序等待其他程序对数据资源的释放,程序间对数据的请求形成互相等待状态。 解决死锁的方法有很多,最简单也是最常用的方法是“一次封锁法”,其基本思想是:每一个要求申请资源的程序在其执行前先对其使用的所有数据资源进行封锁,一次封锁要求把所有打开的数据库文件逐个的加锁,且一次封锁成功。如果有一个文件封锁失败则整个失败,必须重新封锁。一次封锁法的优点是简单方便,它利用的原理是破坏死锁发生的第二个条件;缺点是要求程序在执行前将所有数据一次封锁。这样做不但效率低,而且有时根本不能知道哪些文件将要使用。遇到此情况,只好加大封锁范围,将所有可能用到的数据库全部封锁,不管是否真正用到。在网络上开发数据库系统,有许多命令和函数可以处理共享数据库的冲突问题。常用的处理冲突错误的方法是使用ON ERROR 子程序掌握冲突的处理出口,或重做(RETRY),或返回(RETURN)。下面是一些处理冲突的命令和函数。RETRY 用于修正子程序来重复执行一条命令,知道可以使用为止。 SET EXCLUSIVE ON/OFF 指明以后打开的数据库文件是独占或共享。ON表示独占。 UNLOCK ALL 解除当前工作区的数据库文件的全部记录锁定。 ERROR() 在多用户状态下找出造成错误的原因,返回值为108表示数据库文件已被另一程序独占打开而出错。下表是出错信息一览表。错误码原因108试图打开被独占打开的文件,或试图独占被他人已打开的文件109记录加锁失败110没有以独占方式打开文件,却执行了要求独占方式运行的命令111试图对一个只读文件进行写操作124事先未指定打印机的路径,或打印机非共享130用户尚未加锁的记录执行Replace或read命令FLOCK() 对当前数据库文件加锁,成功返回.T.,否则返回.F.。 ON ERROR DO 在出现错误时转到执行 LOCK()/RLOCK() 对当前数据库文件的当前记录加锁,成功返回.T.。 SYS(0):给出网络分配的机器名和机器号;SYS(5):给出当前驱动器号;SYS(3): 给出一个文件名;SYS(7):给出指定工作区已打开的格式文件名;SYS(12):给出当前内存剩余字节数;SYS(13):给出当前打印机状态(Ready/Offline)。下面举两个例子说明一次封锁法处理死锁的过程。以非独占方式打开m个数据库文件。 SET EXCLUSIVE OFFDO WHILE .T.SELE AUSE file1IF .NOT. FLOCK()UNLOCK ALL *如果封锁失败,重新封锁LOOPENDIF SELE B *若file1封锁成功,再封锁file2USE file2IF .NOT. FLOCK()UNLOCK ALLLOOPENDIFSELE mIF FLOCK() *若filem封锁成功,必然前面m-1个文件也封锁成功EXITENDIFCLOSE DATABASE *一次封锁失败,释放全部的数据库文件ENDDO用独占方式打开m个文件 ERR.PRG *错误出口程序DO CASE CASE ERROR()=108 *封锁打开出错CLOSE ALL *释放资源share=0 *设置标志,0表示封锁失败RETURNCASE ERROR()= *其它出口ENDCASE打开m个文件的一次封锁程序:ON ERROR DO ERR.PRG *出错转ERR.PRGSET EXCLUSIVE ONDO WHILE .T.Share=1 *置标志为成功SELE 1USE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 马工程西方经济学(上册)试卷题库及答案
- 一年级语文试卷题及答案
- 第5讲《面积、周长易错题专项》暑假衔接学案-人教版三升四数学(2026新教材适配)
- 电影制片人电影项目进度与预算执行情况绩效评定表
- 警惕自然灾害安全避险科普小学5-6年级主题班会课件
- 污水处理厂曝气鼓风机安装及减振基础施工组织设计方案
- 科技创新未来属于我们小学主题班会课件
- 2026年设备安装质量员考试题库(附答案)
- 科技探索日:动手实践探索科技奥秘小学主题班会课件
- 某工程安全安全技术交底计划
- 2026湖北交投襄阳高速公路运营管理有限公司一线工作人员招聘考试参考题库及答案详解
- DB11-T 1610-2026 民用建筑信息模型深化设计建模细度标准
- 《中华人民共和国生态环境法典》深度培训
- 2026年中考语文作文热点:科技、AI主题作文范文
- 设备应急供货保障方案
- npds考试题及答案
- 2026年基层医疗机构医疗物资配送难点与对策
- 2026年新能源重卡行业分析报告及未来发展趋势报告
- 家庭教育指导师模拟试题
- 2026年银粉行业分析报告及未来发展趋势报告
- 安置小区安全培训内容
评论
0/150
提交评论