问题描述
实时采集数据,然后记录两个表,一个是原始数据表,一个统计数据表。在线程(非界面主线程)内执行,每120次insert一次原始数据表,每500次insert一次统计数据表,insert统一采用事务。
那么问题出现了:
在测试服务器上面测试的时候,每次插入事务的时候,频繁对数据库select翻页取数据,导致程序崩溃,qt弹出野指针的提示,数据库lock
解决办法
- 每次执行query语句之前,确认上一次锁释放。
query.finish();
- 增加线程互斥锁(目前可能没啥用,以后多线程操作数据库用得上)
头文件
#include <QMutex>
.cpp
QMutex m_mutex;
可以使用自解锁的互斥锁,在自身析构的时候自动设置mutex为unlock。
用法:
#include <QMutexLocker>
QMuteLocker locker(&m_mutex);//在每次局部调用之前声明就可以