解决QSqlQuery::exec: database not open

QSqlQuery::exec: database not open

一、问题说明

在使用自定义数据连接后,发生了数据库连接成功,但是查询失败

Succeed to connect local database.
QSqlQuery::exec: database not open
QSqlError("", "Driver not loaded", "Driver not loaded")

如下问题代码

	QSqlDatabase::addDatabase("QSQLITE", localDBName);
	
	QSqlDatabase loaclDB = QSqlDatabase::database(localDBName);
    loaclDB.setDatabaseName("GraduationDesign.db");

    bool openflag = loaclDB.open();
    if (!openflag)
    {
        qDebug() << "Error: Failed to connect local database." << loaclDB.lastError();
    }
    else
    {
        qDebug() << "Succeed to connect local database." ;
    }

	//问题出在query
    QSqlQuery query;
    query.exec("SELECT UserInfo_TB.ID, UserInfo_TB.UserName FROM UserInfo_TB;");
    if(!query.exec())
    {
        qDebug()<<query.lastError();
    }
    else
    {
      //......
    }

二、解决办法

将 query 与特定的数据库绑定就能解决

 QSqlQuery query(loaclDB );

三、出现原因

我们参考的帮助文档里面的写法是这样的
在这里插入图片描述
实际这是QT系统为我们提供的一个便利,如果我们仅仅只有一个连接,那么系统默认将QSqlQuery关联到了默认的唯一的数据库连接上了(也就是默认的数据库)。也正因如此,我们遇上了QSqlQuery::exec: database not open 的问题。其根源就是我们忽视了 QT的系统默认数据库关联。

  • 18
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳风暴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值