Delphi SQLite3使用ZeosLib,如何共享数据库?

时间:2011-07-15 15:01:03

标签: delphi sqlite timeout

我使用Delphi 7和ZeosLib 6.6.6访问SQLite3数据库。

使用共享数据库的最佳做法是什么。

我计划将数据库文件(data.db3)放在共享位置。

Delphi应用程序位于每个用户的本地台式计算机上。

我想知道如何管理数据库锁定。检测数据库是否被某些用户锁定,等等。

感谢。

2 个答案:

答案 0 :(得分:4)

SQlite3默认情况下在同一台计算机上本地处理数据库共享。您无需做任何事情,只需在硬盘上多次打开数据库即可。当然,它确实有一个开销,locking will make it slower比从一个独特的进程访问。

但是,如果“在共享位置”是指网络驱动器,正如您的问题所示,它可能无法按预期工作。

通过网络锁定文件并不安全(至少在Windows世界中)。见http://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork

您应该依赖真正的客户端/服务器方法,仍然可以使用服务器上的SQLite3,以及通过网络访问它的客户端。参见例如我们的RESTful server使用JSON和几个协议。

答案 1 :(得分:0)

  1. 您可以将SQLite数据库放在共享网络资源上。根据SQLite文档 - 不推荐。主要原因 - SQLite无法有效管理共享资源上的锁定。
  2. 如果您需要多用户访问SQLite数据库,那么您可以考虑使用DataAbstract等中间件。作为Data Abstract的驱动程序,您可以使用我们的库AnyDAC。一些文章:Using SQLite with AnyDACUsing Data Abstract with AnyDAC。在第一篇文章中查看“从Delphi应用程序连接到SQLite数据库”了解用例,包括如何设置并发访问。