- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章并发共享访问编程及其它
第十二章 并发共享访问编程及其它
? 12.1 多用户环境及多用户操作函数、命令 1
12.2 使用数据工作期 5
12.3 用缓冲(Buffering)访问共享数据 7
12.4 用事务处理(Transaction)管理更新数据 12
12.5 Internet与VFP的Active Document 16
如果建立的应用程序在网络环境中的多台计算机上运行,或者一个表单的多个实例对相同数据进行访问,这就要进行共享访问程序设计。共享访问不仅能为用户使用数据和数据共享提供更有效的方法,而且在必要时可对访问进行限制。
VFP具有对数据的共享或独占访问;锁定选项;数据工作期;记录缓冲和表缓冲以及事务处理等功能。尽管这些功能主要用在共享环境里,但在单用户环境下也可以使用。 ?
12.1 多用户环境及多用户操作函数、命令
FoxPro 2.5以上的FoxPro和VFP都是多用户版本,没有单用户版本了。在一个网络环境(例如Novell网文件服务器)中,一个工作站(Workstation)上的用户试图访问一个正被另外的工作站用户访问的记录或文件就会产生碰撞(Collision)。当这种情况出现时,如果多于一个用户打算修改这个记录,则会导致损坏数据的结果。于是便出现了象APPEND、APPEND FROM、ALTER TABLE、INDEX、INSERT、JOIN和UPDATE、UPDATE-SQL等能够自动加锁(隐含加锁)整个表,象APPEND BLANK、APPEN FROM ARRAY、INSERT-SQL等能自动加锁表头,象APPEND MEMO、DELETE、DELETE-SQL、GATHER、BROWSE、CHANGE、EDIT、MODIFY MEMO、READ、RECALL、REPLACE、SHOW GETS等能自动加锁记录的命令(CURSORSETPROP()取决于缓冲进行自动加锁),防止其它工作站破坏用户正访问的数据。但如果不及时解锁,又可能出现死锁(Deadly Embrace)的情况,即:当一个用户锁定了一个记录并希望访问一个正被第二个用户加锁了的记录,或反之,第二个用户正试图访问第一个用户锁定了的记录,等等。死锁的出现是很少的,但随着一个记录加锁的时间的增加,它的可能性也在增加。
VFP提供了如下一些人工明显文件加锁、人工明显记录加锁和解锁以及捕捉错误的函数和命令,可有效地解决上述问题(要求只读访问一个表的命令,不用文件加锁和记录加锁)。
1.表文件加锁的函数FLOCK()
格式:FLOCK([工作区号或别名])
说明:该函数试图将当前或指定工作区的表文件锁定(锁定全部记录)。如果加锁成功,返回.T.(真),这样可读写该表,其它用户只能读不能写。如果加锁不成功,则返回.F.(假),表示这个表或表中的一个记录早已被其它用户锁定了。函数返回类型逻辑型。用户可以根据情况用UNLOCK、USE、CLEAR ALL或者CLOSE DATABASE等命令来关闭表。
在缺省情况下,FLOCK()只对一个表进行一次锁定尝试。用SET REPROCESS,当第一次尝试失败时自动地再次锁定这个表。SET REPROCES确定尝试的次数和再次尝试的间隔时间(详见VFP软件的Help)。用户还可以完全独占地加锁表,防止其他用户访问它(即,将其他用户的只读访问权也剥夺掉),用SET EXCLUSIVE ON 和USE表EXCLUSIVE命令便可独占表。在前面章节,介绍表索引时,已这样用过独占设置命令。
2.表记录加锁的函数RLOCK()
格式:RLOCK([工作区号或别名]|[,[字符表达式列表][,工作区号或别名]])
说明:VFP的RLOCK()函数可锁定多个记录。其中[字符表达式]任选项指定一个或者多个记录号,并用逗号将它们分开,这样RLOCK()函数将试着给这几个记录加锁。例如,要给表中的前5个记录加锁,字符表达式就必须含有1,2,3,4,5。[字符表达式]不选,只给当前记录加锁。用户要给多个记录加锁必须将SET MULTILOCKS设置为ON,并且要给出记录所在工作区号或表的别名。用户还可将记录指针移到相应记录,然后给出RLOCK()函数,重复以上过程给其它记录加锁,同样可达到给多个记录加锁的目的。
在VFP中,可将记录号设置为0,这样用户可给表头加锁,锁定库头时间一定要短,因为一旦锁定了库头,其他用户便不能在表中添加或删除记录了,但可修改字段内的数据。表锁定命令锁定整个表,比表头锁定命令更严厉。
当前或指定工作区表中由字符表达式列表所指定的记录都加上锁,RLOCK()将返回.T.(真),如果表达式列表中的一个或者多个记录不能被锁定,RLOCK将返回.F.(假),并且不给任何一个记录加锁。在上述两种情况下,仍然保留以前已经存在的记
您可能关注的文档
最近下载
- ISO27001 2022版内审全套资料(内审计划+检查表+审核报告等).doc
- fidic99版新红皮书中英文双语对照版.docx VIP
- 钢板弹簧设计计算程序Ver1.0-20070405.xls VIP
- 区块链产业学院建设思路与规划.pptx VIP
- 建筑外门窗气密、水密、抗风压性能分级(1).doc VIP
- 读本低年级 第2讲《一心跟着共产党》第二课时《党和人民心连心》教学课件.pptx VIP
- 数控车床高级工理论考试题库(含答案).docx VIP
- 《WPS Office办公应用案例教程》教学课件 项目8 WPS Office App文档的基本应用.ppt VIP
- 《WPS Office办公应用案例教程》教学课件 项目9 WPS Office App表格和演示文稿的应用.ppt VIP
- 通用质量特性工作计划-模板.docx VIP
文档评论(0)