【发布时间】:2016-07-28 13:13:53
【问题描述】:
我有一个多线程 Qt 应用程序,它有多个线程访问单个数据库。我需要创建单独的 QSqlDatabase 连接以在每个线程中执行 SELECT / INSERT / UPDATE 吗?
从 Qt 文档中,我无法理解以下指南是否不鼓励我建议的上述方法:
“一个连接只能在创建它的线程中使用。 在线程之间移动连接或从 不支持不同的线程。”
我实际上已经尝试在我的多个 QThreads 中使用相同的连接,并且实际上一切正常,但想了解它是否正确。
仅供参考,我在 Qt 中使用 sqlite3(使用 Qtsql API),我理解它支持序列化模式 默认:https://www.sqlite.org/threadsafe.html
我想在多个线程中使用相同的连接名称的原因是因为当我尝试在多个线程上使用不同的连接到同一个数据库并执行 SELECT / INSERT / UPDATE 时,我经常遇到database locked 问题。但是,在多个线程中使用相同的连接时,这个问题就完全消除了。
请提供相同的指导。
问候,
索拉巴·甘地
【问题讨论】:
-
也许可以创建一个包装类,它有一些插槽可以插入/更新/删除并将其放在自己的线程中
标签: multithreading qt sqlite qtsql