网络开发技术文章
一、主要问题
在简单的局域网环境下开发VFP程序时,要注意数据共享冲突的问题。
第二,解决方案
在明确了网络设计的关键点——如何解决两个或两个以上用户同时修改数据时的冲突之后,我们来讨论一下这个问题的解决方法。
基本上有三种方法:
1.独占访问数据;
2.获取数据共享;
3.缓冲数据访问;
其中《作物中级教程》第十三课《初步网络规划》有两点是这方面的介绍。为了方便大家整体阅读,我在这里多给大家说几句啰嗦的话。
1)独占模式
以独占方式打开的表,其他用户不能读写该文件。
代码:
将exclusive设置为on或使用XXX exclusive
使用XXX
只能在独占模式下执行的命令包括index、reindex、pack、zap、alter table、insert,
莫迪斯图等人。
2)分享模式
以共享方式打开并可由多个用户同时访问的表。
代码:
设置独占关闭或使用XXX共享
使用XXX
在添加或更新共享数据表时,涉及到加锁和解锁的问题。
[2-1]锁定数据
一般来说,数据锁定有两种类型:自动锁定和手动锁定。
自动锁定意味着一些vfp命令会在执行前自动锁定一条记录或一个表。如果命令成功锁定,将继续执行,执行后将解锁。(vfp命令的自动锁定范围见相关书籍)
手动锁定是使用锁定功能手动锁定一条记录或一个表。可能的功能有:
Rlock()锁定记录(rlock()相当于lock())
Flock()锁定表
将重新处理设置为[锁定尝试次数]
Set multilock on锁定多个记录的系统设置。
is locked()/is focked()测试is locked()/is locked。
代码:
设置独占关闭和共享模式
将重新处理设置为1并锁定一次
使用XXX &&打开共享表
IF Flock() &&锁表并判断是否成功。
& &如果您不想锁定记录,但只想测试它是否被锁定,请使用isrocked()。
用XX替换所有XX && lock成功执行替换。
解锁和解锁
其他
另一个用户正在使用“等待窗口”文件表示在相应一个网络连接之后
结束条件
[2-2]数据解锁
与锁定相比,解锁数据有两种方式。
对于自动锁定的记录,只需移动记录指针即可解锁。
对于手动锁定的记录,您必须使用以下解锁命令:
解锁,全部解锁
结束事务,tableupdate()
此外,在使用set multilocks off或flood()命令建立新锁之前,还有更彻底的命令可以自动解锁当前锁:clear all、close all、quit。怎么样?彻底!:)
[2-3]我还想说一件事
设计表单的时候,私有数据工作周期用的原因比较长,就不说了。
3)缓冲模式
缓冲有两种方式:使用缓冲的概念共享数据和事务处理。
0条评论