Qt连接sqlite数据库

Qt连接sqlite数据库步骤

①添加数据库模块

QT += sql

②添加头文件

#include<QSqlDatabase> 
#include<QSqlQuery> //sql查询语句

③建立连接

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

④关联数据库

注意:关联的数据库若不存在则会自动创建

db.setDatabaseName("关联数据库的路径");

⑤打开数据库

if(!db.open())
qDebug()<<"database open failed";

 ⑥执行sql语句,操作数据库

QSqlQuery* query = new QSqlQuery;
query->exec("sql语句");

如果不太清楚sql语句的可以翻看我SQL常用语句大全这篇文章,详细讲解了常用的sql语句SQL常用语句大全icon-default.png?t=M85Bhttps://blog.csdn.net/m0_71741835/article/details/127624612 

 可能会遇到的错误

 意思就是存在重复的连接名,旧的连接已删除,数据库所有查询停止工作

解决办法 

将第③步代码修改为

if(QSqlDatabase::contains("qt_sql_default_connection"))
    db = QSqlDatabase::database("qt_sql_default_connection");
    else
    db = QSqlDatabase::addDatabase("QSQLITE");

解释

一般情况下,按照上面的步骤操作,就可以成功连接sqlite数据库了

但其实在第③步骤建立数据库的连接时,我们应该先判断是否存在默认连接,如果存在的话,返回这个默认连接,如果不存在才建立新的连接,添加数据库

上面代码中if语句就是在判断默认连接是否存在,qt_sql_default_connection这个就是Qt的默认连接名称,如果if判断这个默认连接存在,则返回这个默认连接,否则才建立新的连接,设置驱动,添加数据库,QSQLITE是sqlite数据库对应的驱动名

注意:addDatabase()的第二个参数被省略了,第二个参数就是数据库的连接名,默认的话就是Qt的默认连接名称qt_sql_default_connection,如果需要同时操作多个数据库,这个参数就不能省略了,就必须自定义连接名了,然后在定义QSqlQuery对象时要指定连接名来指定操作的是哪个数据库

db = QSqlDatabase::addDatabase("QSQLITE","connection_1");

这个时候,如果在另一个地方需要判断connection_1连接是否存在,就应该使用

if(QSqlDatabase::contains("connection_1"))
...

这篇文章对你有帮助的话~就点个赞吧~

点赞收藏关注就是对我最大的支持~

谢谢你们~


版权声明:本文为m0_71741835原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。