Qt - 共享同一数据库的应用程序

Posted

技术标签:

【中文标题】Qt - 共享同一数据库的应用程序【英文标题】:Qt - Applications sharing the same database 【发布时间】:2018-06-22 19:36:53 【问题描述】:

我有一个应用程序使用:

QString databasePath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
    databasePath += "/MyApp.db";
    qApp->setProperty("MYAPP_DATABASE_PATH", databasePath);

为数据库创建路径

有没有办法让另一个应用程序使用相同的路径来访问相同的数据库?

【问题讨论】:

你可以写出隐藏的 temp.xml 文件的完整路径 【参考方案1】:

来自 SQlite 常见问题解答:

SQLite 使用读/写锁来控制对数据库的访问。 (在不支持读/写锁的 Win95/98/ME 下,改为使用概率模拟。)但请注意:如果数据库文件保存在 NFS 文件系统上,此锁定机制可能无法正常工作。这是因为 fcntl() 文件锁定在许多 NFS 实现中被破坏。如果多个进程可能尝试同时访问该文件,则应避免将 SQLite 数据库文件放在 NFS 上。在 Windows 上,Microsoft 的文档说如果您没有运行 Share.exe 守护程序,锁定可能无法在 FAT 文件系统下工作。对 Windows 有很多经验的人告诉我,网络文件的文件锁定非常有问题,而且不可靠。如果他们说的是真的,那么在两台或多台 Windows 机器之间共享 SQLite 数据库可能会导致意想不到的问题。

【讨论】:

以上是关于Qt - 共享同一数据库的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用应用程序部署 Qt 库?

QT程序与 Linux应用程序运 进程间数据通信实例

qt两个widget渲染相同

如何为非 Qt 应用程序创建 Qt 共享库

尝试使用共享库部署 Qt 应用程序时出错

使用 QT 在 ubuntu 上的共享库(无主库)中运行应用程序