wangyu_1999 2022-07-22 15:53 采纳率: 40%
浏览 334
已结题

QT连接两个qslite数据库报错QSqlQuery::exec: database not open

QT连接两个qslite数据库出现数据连接问题报错QSqlQuery::exec: database not open
两个数据库是两个不同的界面,这是其中一个数据库的代码
主函数程序
QSqlDatabase m_db=QSqlDatabase::addDatabase("QSQLITE","material_connect");
m_db.setDatabaseName("E:\Damage-assessment\software\QT\GUI\GUI4.0\gui1.0\build-gui-Desktop_Qt_5_14_2_MSVC2017_64bit-Release\mental_material.db");

        if(m_db.open())
        {
            qDebug()<<"open success1";
        }
        else
        {
            qDebug()<<"open failed1";
        }

         QSqlQueryModel *model=new QSqlQueryModel(this);

             QString sql;

             sql="select name as  姓名 ,density as 密度, shear_modulus as 剪切模量 ,yield_stress as 屈服应力, maximum_yield_stress as 最大屈服应力, melting_temperature as 熔化温度 from mental_material";

             model->setQuery(sql,m_db);

              ui->display->setModel(model);

点击按钮的槽函数
void material::on_show_pushButton_clicked()
{
QSqlQueryModel *model=new QSqlQueryModel;
QString sql;
sql="select name as 姓名 ,density as 密度, shear_modulus as 剪切模量 ,yield_stress as 屈服应力, maximum_yield_stress as 最大屈服应力, melting_temperature as 熔化温度 from mental_material";

 model->setQuery(sql,m_db);

 ui->display->setModel(model);

}

运行结果及报错内容

这是运行后的图片

img


但是点击显示按钮,数据库没有了

img


报错QSqlQuery::exec: database not open

  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-07-25 14:33
    关注

    先检查m_db是不是类的成员,不应该出现这行代码
    QSqlDatabase m_db=QSqlDatabase::addDatabase("QSQLITE","material_connect");
    至少应该是
    m_db=QSqlDatabase::addDatabase("QSQLITE","material_connect");
    其次,保证绑定的数据库已经打开。
    这个错误是Query绑定数据库没成功,query一直使用的是默认连接。
    1、试试加上this,QSqlQueryModel *model=new QSqlQueryModel(this);
    2、换一种方式,定义QSqlQuery query(m_db);然后query.setDatabase(m_db)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 7月22日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效