• 【Qt之数据库操作】


    使用Qt实现SQLite数据库操作可以分为以下几个步骤:

    1. 添加SQLite头文件和库文件:

    在Qt项目中,需要在.pro文件中添加以下内容:

    QT += sql
    
    • 1
    1. 打开/创建数据库:

    可以使用QSqlDatabase类中的静态函数addDatabase()来添加数据库驱动,例如:

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("test.db");
    if(!db.open()){
        qDebug() << "Can't open the database!" << endl;
        exit(0);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例创建了一个QSqlDatabase对象db,并使用静态函数addDatabase()添加了SQLite数据库驱动。然后使用setDatabaseName()函数设置数据库文件名,最后使用open()函数打开数据库,如果打开失败,则会输出一行错误信息。

    1. 创建表:

    创建表需要使用QSqlQuery类,例如:

    QSqlQuery query;
    query.exec("create table student(id int primary key, name varchar)");
    
    • 1
    • 2

    示例创建了一个QSqlQuery对象query,然后使用exec()函数执行了创建表的SQL语句。

    1. 插入数据:

    插入数据也需要使用QSqlQuery类,例如:

    QSqlQuery query;
    query.exec("insert into student(id, name) values(1, 'Tom')");
    
    • 1
    • 2

    示例创建了一个QSqlQuery对象query,然后使用exec()函数执行了插入数据的SQL语句。

    1. 查询数据:

    查询数据需要先使用QSqlQuery类查询数据,然后使用·QSqlRecord类·获取数据。例如:

    QSqlQuery query("select * from student");
    QSqlRecord rec = query.record();
    int id = rec.indexOf("id");
    int name = rec.indexOf("name");
    
    while (query.next()) {
        int idValue = query.value(id).toInt();
        QString nameValue = query.value(name).toString();
        qDebug() << idValue << nameValue << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例创建了一个QSqlQuery对象query,并使用它查询了student表中的所有数据。
    然后获取了查询结果的结构体rec,并使用indexOf()函数获取了id和name两列的索引。
    接着使用next()函数遍历查询结果,并使用value()函数获取对应列的值。

    1. 更新数据:

    更新数据需要使用QSqlQuery类,例如:

    QSqlQuery query;
    query.exec("update student set name='John' where id=1");
    
    • 1
    • 2

    示例创建了一个QSqlQuery对象query,之后使用exec()函数执行了更新数据的SQL语句。

    1. 删除数据:

    删除数据需要使用QSqlQuery类,例如:

    QSqlQuery query;
    query.exec("delete from student where id=1");
    
    • 1
    • 2

    示例创建了一个QSqlQuery对象query,然后使用exec()函数执行了删除数据的SQL语句。

    1. 事务处理:

    在Qt中,事务处理需要使用QSqlDatabase类的transaction()commit()函数,例如:

    QSqlDatabase::database().transaction();
    QSqlQuery query;
    query.exec("update student set name='John' where id=1");
    query.exec("update student set name='Mike' where id=2");
    QSqlDatabase::database().commit();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    示例通过QSqlDatabase类获取了打开的数据库,并使用transaction()函数开始一个事务。然后使用QSqlQuery类执行了两条更新数据的SQL语句。最后使用commit()函数提交事务,如果在执行事务期间发生了错误,可以使用rollback()函数回滚事务。

  • 相关阅读:
    Springboot 之 Filter 实现 Gzip 压缩超大 json 对象
    2022年全球市场税务调查费保护服务总体规模、主要企业、主要地区、产品和应用细分研究报告
    毕业旅行 | 伦敦5日游行程推荐
    初步了解华为的MTL(市场到线索)流程的基本概念和来龙去脉
    基于个性化推荐的图书网站设计与实现
    【AWS】在EC2上创建root用户,并使用root用户登录
    [附源码]计算机毕业设计毕业生就业管理系统Springboot程序
    Java面试八股之线程池中submit和execute方法的区别
    区块链溯源相比传统追溯有什么优点?
    Spring系列-bean标签内autowire属性应用
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/134278471