0

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

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

如果一个实例更新数据库文件,是否有办法通知应用程序的每个实例?一种明显的方法是使用FileSystemWatcher该类,将整个数据库读入一个 DataSet,然后……你知道……枚举整个事物以查看新内容……但是,实际上,这看起来很愚蠢。有没有提供 SQLite 更新的东西?

这甚至作为一个问题有意义吗?当谈到 ADO.NET 时,我也是一个新手,所以我可能从完全错误的角度来处理这个问题。

4

1 回答 1

3

在网络上使用 SQLite 不是一个好主意。在这里查看 SQLite 自己的建议。

客户端-服务器数据库将更加可靠,也可以解决您的通知问题。例如,PostgreSQL 有一个通过 NOTIFY 和 LISTEN 语句的客户端间信号机制,可以直接从客户端或函数、sproc 或触发器内部使用。

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

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

它提供了缓解这种情况的建议,但没有一个提供任何可靠性保证。

于 2010-04-26T01:38:47.420 回答