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