新编中文Visual_FoxPro_60 实用教程.ppt
文本预览下载声明
第十一章 多用户与数据共享 第一节 多用户环境中的数据访问 第二节 数据缓冲技术 第三节 事务处理 第四节 冲突处理 本章小结 习题十一 第一节 多用户环境中的数据访问 多用户环境中数据访问的最重要原则就是不能两用户同时修改一个数据,否则就会造成冲突,不知以谁的修改为准。 所以共享访问程序设计就要限制对数据的同时访问,避免冲突。 一、多用户环境中数据访问的方式 在多用户环境中,数据访问有两种方式: (1)从独占文件中访问。 (2)从共享文件中访问。 如果以共享方式打开一个表,那么其他用户也可以对该文件进行访问。 但如果以独占方式打开一个表,那么其他用户就不可以再对该文件进行读写操作。 下面以几个假设的数据库与表为例进行介绍。 1.以独占访问方式使用表 独占方式是打开一个文件时最严格的限制方式。通过界面上的菜单或工具栏按钮打开一个表时,默认是以独占方式打开的。 也可以利用Visual FoxPro命令明确地指定以独占方式打开一个表。如果要打开一个独占使用的表,可以有两种方法:(1)方法一:在“命令”窗口中键入下列命令:SET EXCLUSIVE ONUSE teachers 以独占方式打开表teachers.dbf(2)方法二:在“命令”窗口中键入下列命令:USE teachers EXCLUSIVE以上两种方法实现同样的效果。当执行下列Visual FoxPro命令时,系统要求表文件必须以独占方式打开: 1)ALTER TABLE。 2)INDEX(当创建、添加或删除一个复合索引标识时)。 3)INSERT[BLANK]。 4)MODIFY STRUCTURE(若要用此命令更改一个表结构,必须以独占方式打开该表。当以共享方式打开这个表时,只有在只读方式下使用此命令)。 5)PACK。 6)REINDEX。 7)ZAP。 若在一个共享表中执行上述命令,则Visual FoxPro将返回出错信息:“文件必须以独占方式打开”。 2.以共享访问方式使用表 若一个表是以共享方式打开的,则多台计算机可同时访问该表。 在通过界面打开表时,可明确地用Visual FoxPro命令指定以共享方式打开一个表,而不受SET EXCLUSIVE默认的ON所限制。 如果要打开一个共享使用的表,可以有两种方法: (1)方法一:在“命令”窗口中键入下列命令: SET EXCLUSIVE OFF USE teachers 以共享方式打开表teachers.dbf (2)方法二:在“命令”窗口中键入下列命令: USE teachers SHARED 以上两种方法实现同样的效果。 当要在一个共享表中添加或更改数据时,必须先锁定要更改的记录或整个表。方法如下: 1)使用命令自动锁定记录或表。 2)使用记录和表的锁定函数,人工锁定一个或多个记录。 3)用CURSORSETPROP()函数初始化缓冲。 在这三种锁定方式下面打开表文件时,与共享表相关的备注和索引文件也将会以相同的共享方式打开。 如果将一个只是用于查找数据的表标记为只读则可以提高性能。 3.多用户环境中数据库的访问 独占和共享的数据访问方式,不仅适用于表,也适用于数据库。 若要以独占方式打开数据库,则可用下列命令: OPEN DATABASE数据库名EXCLUSIVE 若要以共享方式打开数据库,则可用下列命令: OPEN DATABASE数据库名SHARED 在学习本内容时,最好能够同步地在局域网中的两台计算机上实践操作。 两台计算机同时打开Visual FoxPro 6.0系统,同时对同一数据表进行各种操作,检验多用户对同一数据操作所出现的冲突。若手头上只有一台计算机,则可在同一台机器上同时打开两个Visual FoxPro 6.0系统窗口,用多任务代替多用户,可实现类似的效果。 二、数据锁定的方法 了解独占和共享这两种数据访问方式后,就可以编写最简单的网络程序了。但这样编的程序的网络效率是很低的,因为一旦有人独占数据,其他人就都不能访问了,只能处于等待状态。在有众多用户的环境中,这样必然导致工作效率的下降。所以独占方式在网络环境中是较少使用的。 如果用共享方式访问文件,必须通过锁定表和记录来对这种访问进行管理。“锁”的意思就是用户将数据锁上后,别的用户就不能修改但可查看数据,而且别的用户在查看时也可以对数据进行加锁修改。锁定不同于访问权限,它既可对数据进行长期控制,也可短期控制。 Visual FoxPro提供自动和人工两种锁定方
显示全部