【问题标题】:QT Sql and ThreadsQT Sql 和线程
【发布时间】:2014-06-06 22:52:59
【问题描述】:

这是我的情况,请求是通过浏览器向我的应用程序发出的。 每个请求都由不同的线程处理,在某些情况下,这些请求包括 SQLite 数据库中的 INSERT、UPDATE、DELETE。我不明白的是如何管理与数据库的连接。

对于每个线程,我必须使用一个新连接(因此打开-关闭连接)以确保永远不会有两个同名连接?或者我应该创建一个到数据库的连接并且我必须使用互斥锁来避免并发问题?我正在使用 QTSql 库和 SQLite 作为数据库

对不起,我的英语不好。

【问题讨论】:

    标签: sql multithreading qt sqlite qtsql


    【解决方案1】:

    只能在创建的线程中使用连接。所以我强烈反对使用单一连接。它是否允许并发操作也取决于数据库驱动程序。

    如果你使用事务,你必须记住 SQLite 的事务在 Qt 中默认不是线程安全的(DEFERRED 模式)。据我所知,您可以手动初始化线程安全事务(BEGIN IMMEDIATE TRANSACTION 查询)。

    【讨论】:

    • 但是当两个不同的连接到同一个数据库将编辑相同的数据时会发生什么?我必须使用互斥锁来避免并发?
    • 请阅读这篇文章:stackoverflow.com/questions/1680249/…
    猜你喜欢
    • 2011-04-08
    • 2011-12-24
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多