1

我开发了一个使用 SQLIte 数据库的应用程序 win QT。数据库的副本位于每个站点上。

在一个站点上,假设站点“BOB1”可以完美运行,没有任何问题。但是当我们尝试在另一个站点上使用它时,比如说“BOB2”,打开数据库连接需要很长时间(大约 2000 毫秒)。

我认为可能是网络问题,所以他们尝试使用站点“BOB1”的服务器作为他们的服务器,效果很好。但是当我尝试从站点“BOB1”使用站点“BOB2”的服务器时,我遇到了同样的问题。所以我认为这可能不是网络问题。

我想到的另一件事是,也许存在 DNS 解析问题。但是当我尝试使用 IP 和主机名 ping 服务器时,响应时间是相同的。

任何可能是问题的想法或指针。

PS:使用环境变量在 setDatabasePath() 函数中指定服务器 + 数据库文件路径。

4

1 回答 1

0

考虑将数据库复制到本地计算机(例如临时文件夹,或者永久的其他合适位置)。您可以安全地使用文件副本,或者考虑使用 qt 备份 API 来确保传输成功(另外您还可以选择进度反馈)

https://sqlite.org/backup.html

如果文件很小并且您说您是只读的,您甚至可以将文件从远程服务器“备份”到内存中?

您可以在此处查看有关如何将 sqlite DB 导入 Qt QSqlDatabase 的一些示例代码。请注意,当您执行此操作时,您要确保您使用的 sqlite native API 的版本与编译到 Qt 中的版本相同,否则您可能会收到来自 sqlite 或 Qt 的错误消息。

于 2017-07-12T14:22:39.333 回答