这是我的情况,通过浏览器向我的应用程序发出请求。 每个请求都由不同的线程处理,在某些情况下,这些请求包括在sqlite数据库中的INSERT,UPDATE,DELETE。我不明白的是如何管理与db的连接。
对于每个线程,我必须使用新连接(以及开放式连接),确保永远不会有两个具有相同名称的连接?或者我应该创建到数据库的单个连接,我必须使用互斥锁来避免并发问题?我使用QTSql库和SQLite作为数据库
抱歉我的英语不好。
答案 0 :(得分:1)
连接只能在创建的线程中使用。所以我非常不鼓励使用单一连接。如果它允许并发操作,它还取决于数据库驱动程序。
如果您正在使用事务,则必须记住,默认情况下,SQLite的事务在Qt中不是线程安全的(DEFERRED
模式)。据我所知,您可以手动初始化线程安全事务(BEGIN IMMEDIATE TRANSACTION
查询)。