第11章网络环境下数据共享操作ppt课件_第1页
第11章网络环境下数据共享操作ppt课件_第2页
第11章网络环境下数据共享操作ppt课件_第3页
第11章网络环境下数据共享操作ppt课件_第4页
第11章网络环境下数据共享操作ppt课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章 网络环境下数据共享操作浙江财经学院信息学院 软件教研室 2005-2006 ZUFE, Information School内 容 导 航实际教学课后习题与上机实验本章要点回想学习提要与目的学习提要与目的掌握多用户相关概念共享与独占了解数据锁定的方法本章内容多用户概念数据库文件的独占和共享文件与记录的加锁和解锁网络环境下相关函数与命令维护数据的其他方法前往多用户概念引入: 随着网络技术的开展,用户希望共享数据库的数据,即多个用户同时运用一个数据库里的数据多用户概念: 指允许两个或两个以上用户同时访问读取、修正等数据库数据和外部设备。多用户环境下产生的最大问题: 数据有能够不一致,如何

2、坚持数据的一致性成为了多用户环境下遇到的最大问题。多用户概念数据不一致性的缘由:对数据修正引起,普通分为以下两种情况。1、程序甲和程序乙同时对文件A修正,修正后谁也无法确定哪些数据是程序甲修正的,哪些数据是程序乙修正的,哪些数据是程序甲乙共同修正的,从而导致数据不一致性。2、程序甲对文件A修正,程序乙对文件A多次读取,呵斥前后读取数据不一致多用户概念不一致性的两种处理方法:1、独占:当某用户对表文件数据修正时,不允许其他用户对该文件数据执行任何操作,包括读取、修正等,缺陷是破坏了网络上共享数据的优点,尽量少用。2、加锁:当某个用户对表文件数据修正时,允许其他用户对该表文件数据读取,但不能修正。

3、加锁后要及时解锁。加锁也带来了两个新问题:冲突和死锁。多用户概念冲突概念: 指当一个用户对表文件或记录加锁修正时,另一个用户也企图翻开同一表文件或记录进展修正,从而发生冲突,我们可以用捕捉错误命令ON ERROR处置冲突问题。死锁概念: 指一用户锁定一个文件或记录后,又去访问正被另一个用户加锁的文件或记录,而另一个用户对文件加锁后又去访问第一个用户锁定的文件多用户概念 或记录。当发生“死锁时,两个用户无论等待多长时间,都无法等到对方开锁,其过程如图11.1所示。数据1用户A数据2用户B排队等待进入加锁排队等待进入加锁图11.1 “死锁情况11.2 数据库文件的独占和共享表文件的独占表文件的共享

4、一、表文件的独占P470独占:表文件中数据只能本人运用,他人不能运用,即既不能修正,也不能查看以“独占方式翻开表文件的两种命令格式:1、格式1:SET EXCLUSIVE ON/OFF 功能:指定Foxpro能否以独占或共享方式翻开 表文件。当设置为ON时,翻开的一切表文件都被该用户独占,当设置为OFF时,翻开的表文件变成共享运用一、表文件的独占P4702、格式2:USEEXCLUSIVE 功能:以独占方式翻开表文件 例:USE 学生 EXCLUSIVE留意: SET EXCLUSIVE不能改动原先曾经翻开的表文件的形状。例如:一个表文件在SET EXCLUSIVE ON时翻开了,然后执行SE

5、T EXCLUSIVE OFF后,这时该表文件仍坚持独占的方式翻开着。二、表文件的共享(P471)共享:假设只是查看数据,而不进展修正,那么应该以共享方式翻开表。“共享方式翻开的命令格式: 格式:USESHARED 功能:以共享方式翻开表文件 例:USE 学生 SHARED OPEN database 数据库名 SHARED 二、表文件的共享留意点:SET EXCLUSIVE ON/OFF与USEEXCLUSIVE/SHARE区别:前者一旦设置,对后面翻开的文件都将有效,而后者只对该命令中的一个表文件有效。另外,它的优先级高于SET EXCLUSIVE。假设以独占方式翻开表文件,他人无论采用独

6、占或共享翻开表文件都会出错,另外,假设有人以共享方式翻开表文件,其他用户以独占方式翻开,也会出现同样问题。11 .3 文件与记录的加锁和解锁锁的概念自动加锁人工加锁表文件与记录的解锁一、锁的概念锁的概念: 某个用户对数据锁上后,他人不可以修正但可以查看。加锁的目的: 防止两个用户同时写一个记录,坚持数据的一致性。加锁的两种方式:自动加锁人工加锁二、自动加锁概念: 许多命令在执行之前,自动锁定一张表或一条记录,假设锁定胜利,就执行该命令,执行后自动解除锁定。1、表文件自动加锁:1假设要对整个表文件或表文件中的多条记录进展修正,那么必需先对整个表文件加锁。2加锁的命令如下:二、自动加锁APPEND

7、APPEND FROMDELETE一个记录以上INDEXJOINRECALL一个记录以上REPLACE一个记录以上UPDATE二、自动加锁2、表文件头自动加锁1某些命令,如向表中追加记录,虽然对当前表中记录没有影响,但是必需保证表头构造不被修正,因此要锁定它。2加锁命令如下:APPEND BLANKAPPEND FROM ARRAYINSERT-SQL二、自动加锁3、记录自动加锁1假设用户只对表文件中一条记录进展修正,那么只需对相关记录进展加锁。2加锁的命令如下:命令锁定范围APPEND MEMO当前记录DELETE当前记录DELETE NET 1当前记录DELETE RECORE第n条记录二

8、、自动加锁命令锁定范围GATHER当前记录MODIFY MEMO编辑开始时的当前记录READ当前记录RECALL当前记录RECALL NEXT 1当前记录RECALL RECORD 第n条记录REPLACE当前记录(和所有别名字段中的记录)REPLACE NEXT 1当前记录(和所有别名字段中的记录)REPLACE RECORD第n条记录(和所有别名字段中的记录)SHOW GETS当前记录(和所有别名字段中的记录)二、自动加锁4、不需求加锁的命令1执行只读的命令,任何时候都可以胜利执行,不需求加锁。2不需加锁命令如下:COPYCOPY STRUCTRUELIST/DISPLAYLOCATECO

9、UNT/SUM/AVERAGESORTTOTAL三、人工加锁概念: 用户经过函数对表文件或记录进展人工加锁,运用完后要尽快解锁。人工加锁运用的三个函数1、表文件加锁函数 格式:FLOCK(任务区号/别名) 函数值类型:逻辑型 功能:即给指定任务区号或别名的表文件加锁,假设省略任务区号或别名,那么给当前任务区的表文件加锁。三、人工加锁2、记录加锁函数 格式:RLOCK(任务区号/别名/记录号列表,任务区号/别名) 函数值类型:逻辑型 功能:锁定表文件中一条或多条记录。假设不指定任务区号或别名,那么将锁定当前任务区中的当前记录 例:RLOCK(1,3,5,学生) RLOCK(学生) RLOCK()

10、三、人工加锁 留意:假设要锁定多条记录,必需设置SET MULTILOCK ON,假设是SET MULTILOCK OFF,那么最后一条记录被锁定。 3、LOCK()函数 格式:LOCK(任务区号/别名/记录号列表,任务区号/别名) 函数值类型:逻辑型 功能:锁定表文件中一条或多条记录。假设不指定任务区号或别名,那么将锁定当前任务区中的当前记录三、人工加锁留意:该函数与RLOCK的功能完全一样有些操作必需在独占方式下才干执行,如INSERT,INSERT BLANK,MODIFY STRUCTURE,PACK,REINDEX和ZAP,由于它们会使表中的一切记录发生改动或者使表的构造发生变化。因

11、此,不是说有了锁,独占翻开表的方式就没有用了。三、人工加锁例11.1 一个人工加锁的例子(P475 SET EXCLUSIVE OFF SET REPROCESS TO 2 USE 学生 IF FLOCK() REPLACE ALL 奖学金 WITH 奖学金+100 UNLOCK ELSE ?文件不能加 ENDIF四、表文件与记录的解锁表文件或记录锁定后应尽快解锁,以便其他用户可以进展修正操作。解锁命令如下: 格式:UNLOCKIN/ALL 功能:对一个表文件、一条或多条记录进展解锁,或对一切表文件和一切记录进展解锁。11 .4 网络环境下相关函数与命令显示和获取锁定形状参数设置命令错误捕捉命

12、令与函数一、显示和获取锁定形状显示锁定形状命令 格式:LIST STATUS/DISPLAY STATUS 功能:显示Visual Foxpro当前任务环境的信息锁定形状测试函数 格式:SYS(2021) 函数类型:字符型 功能:以字符串方式前往当前任务区中表文件或记录的锁定形状。二、参数设置命令锁定记录条数开关命令 格式:SET MULTILOCKSON/OFF 功能:决议RLOCK()或LOCK()能否能锁定多条记录。设置锁定记录条数命令 格式:SET REPROCESS TO 次数SECONDS/TO AUTOMATIC二、参数设置命令 功能:指定一次锁定尝试不胜利后,Visual Fo

13、xpro对文件或记录再次尝试加锁的次数或时间。普通情况下我们只需求试一次就可以了,故普通在程序开头设置SET REPROCESS TO 1。 例:SET REPROCESS TO 1 SELECT 学生 JSCG=FLOCK() IF JSCG *进入数据的修正处置二、参数设置命令 ELSE MESSAGEBOX(其他人正在修正数据,您不能修正,请稍后再试。,16,留意) ENDIF UNLOCK自动锁定开关命令 格式:SET LOCK ON/OFF 功能:激活或废止在某些命令中的自动锁定功能三、错误捕捉命令与函数错误捕捉命令 格式:ON ERRORCommand 功能:当出现错误时,指出要执

14、行的命令。Command指定要执行的Visual Foxpro命令。执行该命令后,程序将从引起错误的程序行的下一行重新开场执行。假设错误处置程序中包含RETRY命令,那么重新执行引起错误的程序行。三、错误捕捉命令与函数错误类型测试函数格式1:ERROR() 函数值类型:数值型 功能:前往触发ON ERROR例程的错误编号格式2:MESSAGE(1) 函数值类型:字符型 功能:以字符串方式前往当前错误信息,或者前往导致这个错误的程序行内容。11.5 维护数据的其他方法数据缓冲技术运用事务处置机制更新数据一、数据缓冲技术采用缓冲目的: 在更新过程中对数据加以维护。缓冲技术采用的两种方法:1、将当前

15、记录加锁后赋值到内存或磁盘区域,即缓冲区,当记录指针挪动或发出更新命令时,直接将缓冲区内容更新到原来表文件中。2、先将当前记录复制到缓冲区,并允许对其进展编辑,而其他用户依然可以访问原来记录,一、数据缓冲技术 当记录指针挪动或发出更新命令时,那么先锁定记录,并对缓冲区数据与原表数据进展比较,再执行数据更新。启动缓冲之前必需选定缓冲方法和锁定方式。1、选择缓冲方法:记录缓冲:只对一个记录进展访问,选择该缓冲表缓冲:假设对多条记录进展更新,选择表缓冲。一、数据缓冲技术2、选择锁定方式:锁定方式有下面两种:保守式缓冲开放式缓冲3、缓冲的启动运用CURSORSETPROP()函数格式:CURSORSE

16、TPROP(属性,属性值,任务区号、别名)功能:设置Visual Foxpro表文件或暂时表的属性。假设省略属性值,那么取系统默许值。一、数据缓冲技术表11.2 Buffering属性取值及含义属性值含义1无缓冲2保守式记录锁定3开放式记录锁定4保守式表锁定5开放式表锁定一、数据缓冲技术4、在表缓冲区中追加和删除记录 可以在启用表缓冲之后追加和删除记录。追加的记录将添加到缓冲区末尾。要访问缓冲区中一切记录,包括追加记录,可运用RECNO()函数。5、执行更新三种方法1、在表单设计器中,在表单的BufferMode属性中设置2、选择工具菜单的选项命令,在弹出选项窗口中选择数据选项卡,在缓冲下拉列

17、表框中选择。3、在代码中设置二、运用事务处置机制更新数据事务处置机制: 事务处置机制将整段代码作为一个受维护的、可恢复的对象的单元,其功能超越了对记录缓冲和表缓冲所提供的维护,能更好地维护更新操作,当发生更新错误时能从整段代码中复原到更新之前的形状。1、控制事务处置的命令1格式:BEGIN TRANSACTION二、运用事务处置机制更新数据 功能:启动一个事务处置2格式:END TRANSACTION 功能:终了当前事务3格式:ROLLBACK 功能:取消当前事务期间所作的任何修正2、事务处置的运用 事务处置遵照以下原那么:1一个事务处置以BEGIN TRANSACTION二、运用事务处置机制

18、更新数据 开场,END TRANSACTION或ROLLBACK命令终了。只需END TRANSACTION命令,而前面没有BEGIN TRANSACTION命令与之匹配,那么会发生错误。2ROLLBACK命令前没有BEGIN TRANSACTION将会出错。3假设咱事务处置过程中运用程序中止,那么一切操作回滚。4对于涉及事务处置数据的查询,Visual Foxpro在运用磁盘数据前,首先运用在事务处置二、运用事务处置机制更新数据 缓冲区内的高速缓冲数据,以确保运用的是最新的数据。5事务处置只在数据库容器内运用。6事务处置完成以下锁定动作:当一个命令直接或间接调用事务处置时,Visual Foxpro将强迫执行锁定动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论