从SQLite接收.NET中的DB更新事件

时间:2010-04-26 01:34:13

标签: .net sqlite notifications filesystemwatcher system.data.sqlite

我最近发现了SQLite的强大功能,特别是http://sqlite.phxsoftware.com/的SQLite .NET包装器。

现在,假设我正在开发将在同一网络上的多台计算机上运行的软件。没什么好疯狂的,可能只有5或6台机器。并且每个软件实例都将访问存储在共享目录中的文件中的SQLite数据库(这是一个坏主意吗?如果是这样,请告诉我!)。

如果一个实例更新数据库文件,是否有办法让应用程序的每个实例都被通知?一个显而易见的方法是使用FileSystemWatcher类,将整个数据库读入DataSet,然后......你知道......通过整个事件枚举来查看新的...但是,是的,实际上,这看起来很愚蠢。有没有SQLite更新的提供者?

这是否有问题作为一个问题?在谈到ADO.NET时,我也是一个新手,所以我可能会从完全错误的角度来解决这个问题。

1 个答案:

答案 0 :(得分:3)

在网络中使用SQLite不是一个好主意。查看SQLite自己对此here的建议。

客户端 - 服务器数据库将更加可靠,并且还可以解决您的通知问题。例如,PostgreSQL通过NOTIFY和LISTEN语句具有客户端间信令机制,可以直接从客户端或函数,sproc或触发器中使用。

即使您决定使用SQLite,也不要使用文件监视API。由于文件系统内部的竞争条件,它们在Windows上完全被破坏。来自FileSystemWatcher的MSDN条目:

  

请注意,由于与Windows操作系统的依赖性,FileSystemWatcher在错过事件或超出缓冲区大小时不会引发Error事件。

它提供了缓解这一点的建议,但它们都没有提供任何可靠性保证。