【Qt之数据库操作】

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

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

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

cpp 复制代码
QT += sql
  1. 打开/创建数据库:

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

cpp 复制代码
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
if(!db.open()){
    qDebug() << "Can't open the database!" << endl;
    exit(0);
}

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

  1. 创建表:

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

cpp 复制代码
QSqlQuery query;
query.exec("create table student(id int primary key, name varchar)");

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

  1. 插入数据:

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

cpp 复制代码
QSqlQuery query;
query.exec("insert into student(id, name) values(1, 'Tom')");

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

  1. 查询数据:

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

cpp 复制代码
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;
}

示例创建了一个QSqlQuery对象query,并使用它查询了student表中的所有数据。

然后获取了查询结果的结构体rec,并使用indexOf()函数获取了id和name两列的索引。

接着使用next()函数遍历查询结果,并使用value()函数获取对应列的值。

  1. 更新数据:

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

cpp 复制代码
QSqlQuery query;
query.exec("update student set name='John' where id=1");

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

  1. 删除数据:

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

cpp 复制代码
QSqlQuery query;
query.exec("delete from student where id=1");

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

  1. 事务处理:

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

cpp 复制代码
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();

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

相关推荐
此时不提桶,更待何时12 小时前
01-06-A-JVM排查实战详解
java·jvm
这个DBA有点耶12 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G13 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备13 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远13 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_9622186114 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
慧都小项15 小时前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
张洛闻Eren15 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安15 小时前
MySQL-触发器
数据库·mysql
白远山15 小时前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析