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." ;
}
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的系统默认数据库关联。
|