Qt QML连接数据库如何解决重复创建连接问题
之前有写过用QML连接数据库的文章,后面项目做大了之后才发现当类反复的实例化时,由于init()函数是在构造函数中被调用的原因,qt会反复的创建数据库连接,并发出警告。
所以必须要解决这个问题,但其实解决方法也很直接简单,建立一个固定的连接就行了:
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博客