gpt4 book ai didi

c++ - 使用 Qt 和 SQLite 数据库的并发

转载 作者:行者123 更新时间:2023-11-28 03:10:30 24 4
gpt4 key购买 nike

我正在开发一个非常简单的小型应用程序,它将使用 Qt/SQLite。有时,应用程序会从办公室周围的多台计算机访问共享的 SQLite 数据库。

有没有办法检测(通过事件?)何时从网络上的另一台计算机对数据库进行了更新,以便程序可以知道刷新其信息?

此外,与数据库的连接是否可以被其他计算机监控(以便他们知道谁在编辑数据库)?

理想情况下,我不想在数据库中为“协作”目的创建一个单独的表,而且设置计时器和循环只是为了监视事件是不值得的;我只是想知道是否有任何内置的东西我可以利用以确保连接的每个人始终以有效的方式“在同一页面上”。

作为最后的手段,监视 SQLite 数据库文件的最后修改时间的 Qt 信号是否是跟踪是否有更新的可靠方法,或者 Qt SQLite 驱动程序是否倾向于在 SQL 事务之外接触数据库文件?

最佳答案

我同意,如果这很容易,那就太好了,但事实并非如此。 SQLite 不提供任何机制来直接提供此类功能。 sqlite3_update_hook系统只监控一个必须在监控进程内的连接。

您可以做的是创建一个本地分布式通知系统。大致:

  1. 创建调用自定义 SQLite 函数的 sql 触发器。

  2. 自定义 SQLite 函数将事件发布到某个通知程序 QObject。这需要通过 extern 'C' {...} stub 来完成。

  3. 通知器QObject 在本地子网上广播更改的内容和位置。这可以被网络上运行的所有应用程序获取。

  4. 如果您想变得非常非常聪明,您可以在接收通知并发送相关信号的 sqlite 模型之上有一个自定义代理模型。

如果您追求的是特定案例而不是通用解决方案,那么整个事情可以非常非常简单。这听起来很复杂 :) 如果你想看看可能涉及的其他内容,请查看 here .

关于c++ - 使用 Qt 和 SQLite 数据库的并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com