我们可以在不创建锁文件的情况下访问Delphi DBIV数据库吗?
我试图从Delphi DBIV数据库中读取数据,每次访问该数据库时,都会创建一个Paradox.lck和Pdoxusrs.lck文件。我只使用一个TQuery对象来执行此操作(没有其他操作)。不用创建这些锁定文件就可以访问Delphi DBIV数据库吗?
解决方案
为什么不想要锁定文件?无需深入研究,我认为这些锁定文件具有真正的目的
自从我使用BDE已经有一段时间了,但是我们不能在SELECT查询中使用某些关键字来表示我们不需要任何锁定吗?
例如,在MS SQL中,可以使用以下语法:
SELECT * WITH(NOLOCK) FROM SomeTable
如果应用程序正在创建PARADOX.LCK和PDOXUSRS.LCK文件,它也在某个地方创建或者访问PDOXUSRS.NET文件。
BDE使用单个公共PDOXUSRS.NET文件以及每个共享目录中的PARADOX.LCK和PDOXUSRS.LCK文件来协调引擎的分布式实例之间的共享访问。
我们必须确定应用程序是否与任何其他应用程序共享表。如果数据是共享的,则必须允许BDE创建和使用这些锁定文件。
如果确定我们是数据的SOLE用户,则可以消除锁文件的创建。但是-除非锁定文件是阻止我们执行有用操作的唯一方法,否则很少值得阻止其创建。
注册表项告诉BDE在哪里可以找到其配置文件。 BDE附带了一个配置文件编辑器。查找BDEADMIN.EXE或者BDECFG32.EXE。配置编辑器使用相同的注册表项来确定要编辑的文件。
当我们是数据的唯一用户时,为避免创建锁定文件,请执行以下操作:
- 打开配置编辑器。
- 转到配置|驱动程序|本地人| PARADOX或者驱动程序| PARADOX,并记下NET DIR条目。
- 将NET DIR值设置为空白。
- 转到配置|系统| INIT或者System,然后将LOCAL SHARE设置为False。
- 保存修改。
- 按照我们在步骤2中记下的路径,删除在那里找到的PDOXUSRS.NET。
- 删除数据目录中所有剩余的PARADOX.LCK或者PDOXUSRS.LCK文件。
警告:当我们不了解锁定文件的用途时,请四处逛逛,这是使应用程序更加砖砌的好方法。
-Al
感谢回复。我会研究两个建议。
致A I Breveleri:
是的,我知道我们在说什么,我不愿意将其关闭,但是使用该数据库的另一个App比我的重要得多。理想情况下,我希望发生以下情况:
我的应用程序开始获取数据,如果另一个应用程序要使用数据库,则我的应用程序停止。
目前正好相反。
炖。