标题:可以让多个程序调用同一个DBF数据表么
只看楼主
yttv8
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2011-11-25
得分:0 
我实际操作的情况来看,只添加SET EXCLUSIVE off  就可以实现
不知use aaa share again功能是不是重复了?
2012-05-15 10:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
set exclusive指令是全局指令,从发出这条指令开始以后全局生效。exclusive是“排他”的意思,即不允许与人共享,等于独占。因此如果指令on,就是启动独占模式,指示vfp以后凡是打开数据库,均独占,若是off,即是取消独占,可以共享。set exclusive指令的默认值,在vfp的option中可以设置,但一般在程序的启动代码中自己显式设定,不要依靠vfp环境的默认。

在程序运行过程中凡是打开数据库,若没有自己使用use语句打开,比如SQL指令那种自动打开数据库的举动,就会使用全局set exclusive值。不过,如果SQL发现需要使用的数据库已经被打开,就不会重新打开,直接使用现成的,这个时候,就不理会set exclusive设置状态了。

因此,当使用SQL这类具有自动打开数据库机制的指令时,可以不用use语句,但若不是这类机制的指令,则必须使用use打开数据库。所以,你这种情况是不必要再use的,但使用SQL之后要自己收拾它打开的数据库和临时表、视图,它屙屎,你擦屁股,有时擦不干净,后面有古怪的现象,就很难排查了。

谨慎的编程,是自己使用use带exclusive或share参数打开所有用到的数据库、自己关闭,不依赖“未知”、“可能”。诸如SQL Select等生成了视图,也必须要自己select工作区和use关闭掉的,最好熟悉它们到底干了些什么,否则大量使用SQL,内存中充斥废弃未用的视图,浪费资源事小,影响数据事大。

[ 本帖最后由 TonyDeng 于 2012-5-15 13:04 编辑 ]

授人以渔,不授人以鱼。
2012-05-15 12:53
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
以下是引用TonyDeng在2012-5-15 12:53:30的发言:

set exclusive指令是全局指令,从发出这条指令开始以后全局生效。exclusive是“排他”的意思,即不允许与人共享,等于独占。因此如果指令on,就是启动独占模式,指示vfp以后凡是打开数据库,均独占,若是off,即是取消独占,可以共享。set exclusive指令的默认值,在vfp的option中可以设置,但一般在程序的启动代码中自己显式设定,不要依靠vfp环境的默认。

在程序运行过程中凡是打开数据库,若没有自己使用use语句打开,比如SQL指令那种自动打开数据库的举动,就会使用全局set exclusive值。不过,如果SQL发现需要使用的数据库已经被打开,就不会重新打开,直接使用现成的,这个时候,就不理会set exclusive设置状态了。

因此,当使用SQL这类具有自动打开数据库机制的指令时,可以不用use语句,但若不是这类机制的指令,则必须使用use打开数据库。所以,你这种情况是不必要再use的,但使用SQL之后要自己收拾它打开的数据库和临时表、视图,它屙屎,你擦屁股,有时擦不干净,后面有古怪的现象,就很难排查了。

谨慎的编程,是自己使用use带exclusive或share参数打开所有用到的数据库、自己关闭,不依赖“未知”、“可能”。诸如SQL Select等生成了视图,也必须要自己select工作区和use关闭掉的,最好熟悉它们到底干了些什么,否则大量使用SQL,内存中充斥废弃未用的视图,浪费资源事小,影响数据事大。
阐述明了,启蒙受益,谢谢

只求每天有一丁点儿的进步就可以了
2012-05-15 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367483-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.731555 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved