网站大量收购闲置独家精品文档,联系QQ:2885784924

NetWare下的FoxPro网络编程.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NetWare下的FoxPro网络编程

NetWare下的FoxPro网络编程 网络环境是一个多用户环境,数据库在网络上的应用首先要解决的一个问题就是如何协调不同用户在网络上的共享冲突问题。例如,一个数据库文件,用户甲打开它进行查询工作,同时用户乙打开它进行修改,这就发生了混乱。一般来说,任何网络系统,任何数据库系统,共享文件都不允许在某一时刻有两个以上的用户同时修改它,否则将产生混乱。解决此类问题,可以利用数据库系统的文件或记录加锁予以解决。下面以NetWare操作系统为例说明如何利用FoxPro数据库系统开发网络应用程序。 在Foxpro数据库系统,执行某些修改命令时,系统会自动对文件或记录加锁,当操作完成后,加锁自动解除。此外,程序设计人员也可以对文件或记录进行人为的加锁、解锁处理,以防止出现混乱。 在网络上的数据库处理中,经常会遇到死锁。例如用户甲锁住了记录A而去操作记录B,而此时正好用户乙锁住记录B而去操作记录A,出现双方无限期的等待对方的现象,形成死锁,这在网络上的数据库操作中经常遇到。 下面以一个例子说明。 在一个数据库系统里,两个进程A与B的程序如下: A.PRG B.PRG ON ERROR DO ERR1 ON ERROR DO ERR2 SET EXCLUSIVE ON SET EXCLUSIVE ON SELE A SELE A USE FILE1 USE FILE2 … … SELE B SELE B USE FILE2 USE FILE1 …… …… 假设A与B的错误处理程序ERR1.PRG与err2.prg结构相同: IF ERROR 108 RETRY ELSE RETURN TO MASTER ENDIF 这里108号错误表示文件被另一文件使用,不能打开。很显然,上述双方将无限期地等下去,出现死锁。 形成死锁的原因主要有以下几种: 程序对资源的封锁是采取独占方式,不允许他人对同一数据资源再封锁极其操作。 已经对某些资源设置了封锁机制,在执行过程中还对新的资源发出封锁请求而不释放原有资源。 已经封锁的资源被某程序挂起,但却被授予其他程序使用。 允许程序等待其他程序对数据资源的释放,程序间对数据的请求形成互相等待状态。 解决死锁的方法有很多,最简单也是最常用的方法是“一次封锁法”,其基本思想是: 每一个要求申请资源的程序在其执行前先对其使用的所有数据资源进行封锁,一次封锁要求把所有打开的数据库文件逐个的加锁,且一次封锁成功。如果有一个文件封锁失败则整个失败,必须重新封锁。 一次封锁法的优点是简单方便,它利用的原理是破坏死锁发生的第二个条件;缺点是要求程序在执行前将所有数据一次封锁。这样做不但效率低,而且有时根本不能知道哪些文件将要使用。遇到此情况,只好加大封锁范围,将所有可能用到的数据库全部封锁,不管是否真正用到。 在网络上开发数据库系统,有许多命令和函数可以处理共享数据库的冲突问题。常用的处理冲突错误的方法是使用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 OFF DO WHILE .T. SELE A USE file1 IF .NOT. FLOCK UNLOCK AL

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档