UI线程读 , 另一个线程写同一个sqlite

weixin_38071599 2019-09-19 07:25:13
我有这样一个应用, UI线程,使用 QSqltablemodel 和 Qtableview 显示数据库里面的数据。 在UI线程中中创建了另一个线程,用于不停采集数据,向数据库插入。 数据很小时,显示和插入就没有问题。但是当sqlite里数据量大了以后,只要UI线程一执行select(),另一个线程的的 query.exec() 就返回false里。请教破解方法! 我的代码类似这样:在UI线程中创建一个数据库连接 复制代码processDisplayDB =new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE","processDisplaydb"));    processDisplayDB->setDatabaseName("databases/ProductionData.s3db");    if(!processDisplayDB->open()){        qDebug()<<"Could not open file!"<<endl;        return;    }else{         qDebug()<<"Open file: "<<processDisplayDB->databaseName()<<" sucessfully!"<<endl;    }    modelProcessDisplay = new QSqlTableModel(ui->tableViewProcessDisplay,*processDisplayDB);    modelProcessDisplay->setTable("processtable");然后通过定时器周期触发刷新信号,复制代码connect(&cylicTimerProcessDisplay,&QTimer::timeout,this,&MainWindow::processDisplayUpdate_cylic);通过刷新来更新tableview内容复制代码void MainWindow::processDisplayUpdate_cylic(){  modelProcessDisplay->select();}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////另外一个线程是,建了另外一个连接到同一个数据库 复制代码processDB = new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE","processDB"));    processDB->setDatabaseName("databases/ProductionData.s3db");    if(!processDB->open()){        qDebug()<<"Could not open file!"<<endl;        return;    }else{         qDebug()<<"Open file: "<<processDB->databaseName()<<" sucessfully!"<<endl;    }然后数据采集到以后,写入数据库复制代码QSqlQuery query(*processDB);    qDebug()<<"insert processtable prepare : "           <<query.prepare("INSERT INTO processtable(SerialNo) "                           "VALUES(:SerialNo)");    query.bindValue(":SerialNo",currentSerialNo);    qDebug()<<"insert processtable: "<<query.exec();现在的问题是,当sqlite里数据量增大后, qDebug()<<"insert processtable: "<<query.exec(); 就执行不成功了。 经过检查,发现是 UI线程里 select() 引起的,但是不知道该怎么解决为好?  这个数据库是采集设备状态,肯定数据库不停增大的。请大家帮帮我看看?谢谢
...全文
24 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧