Qt QML连接数据库如何解决重复创建连接问题

之前有写过用QML连接数据库的文章,后面项目做大了之后才发现当类反复的实例化时,由于init()函数是在构造函数中被调用的原因,qt会反复的创建数据库连接,并发出警告。

所以必须要解决这个问题,但其实解决方法也很直接简单,建立一个固定的连接就行了:

cpp 复制代码
void MusicInfo::init()
{
    if(QSqlDatabase::contains("music")) {    //在建表前检查连接池中是否存在同名连接
        db=QSqlDatabase::database("music");    //存在就直接取出连接赋值给db
    }
    else{
        db=QSqlDatabase::addDatabase("QSQLITE", "music");    //不存在则创建连接
    }
    db.setDatabaseName("music.db");
    if(!db.open()){
        qWarning()<<"打开数据库失败"<<db.lastError().text();
        return;
    }

    QSqlQuery query(db);    //指定连接初始化

    ......
}

这样一来,就能够只使用特定连接的数据库了,至于连接名"music"是按自己需求随意写的,原文不方便再次修改了,故再开了一篇单独码了下,原文链接:Qt6 QML如何用SQLite数据库存储读取ListModel数据(解决重复创建连接问题)-CSDN博客