优秀网站赏析,美食网站开发,公司网站优点,物流网站建设网目录
一、前言
二、类与接口介绍
1.连接管理类
2.数据操作类
3.数据模型类
4.其它类
三、主要操作流程
1.示例
2.绑定参数
3.事务操作 一、前言
要在Qt中操作数据库#xff0c;首先要安装对应的数据库#xff0c;还要确保安装了Qt SQL模块。使用MySQL时#xff0…目录
一、前言
二、类与接口介绍
1.连接管理类
2.数据操作类
3.数据模型类
4.其它类
三、主要操作流程
1.示例
2.绑定参数
3.事务操作 一、前言
要在Qt中操作数据库首先要安装对应的数据库还要确保安装了Qt SQL模块。使用MySQL时可能还要添加数据库驱动。
可参考下文
Qt操作数据库详解_qt 数据库-CSDN博客
Qt中编译数据库驱动 | 爱编程的大丙
在使用时要添加模块依赖QT sql以引入Qt SQL模块。 二、类与接口介绍
1.连接管理类
QSqlDatabase用于创建和管理数据库连接。通过调用静态方法addDatabase()创建连接指定数据库驱动类型和连接名称。
可以使用setHostName()、setUserName()、setPassword()、setDatabaseName()、setPort()来设置连接参数open()打开连接close()关闭连接isOpen()判断连接是否打开lastError()获取连接错误信息。 2.数据操作类
①QSqlQuery用于执行SQL语句并处理结果集。
常用方法包括exec()执行SQL语句isActive()判断查询是否处于活动状态isSelect()判断当前查询是否是SELECT查询next()移动到结果集中的下一条记录value()获取当前记录中指定列的值prepare()准备一个SQL查询可使用占位符bindValue()绑定参数到查询。
②QSqlError用于表示数据库操作过程中的错误信息。通过QSqlDatabase或QSqlQuery的lastError()方法获取包含错误代码、错误文本等信息。 3.数据模型类
①QSqlQueryModel基于SQL查询的只读模型用于在视图中显示数据库查询结果。
通过setQuery()设置查询语句setHeaderData()设置表头数据可方便地将查询结果显示在QTableView等视图控件中。
②QSqlTableModel提供了一次只能操作一个SQL表的读/写模型可以浏览和修改独立的SQL表并且只需编写很少的代码无需了解SQL语句。
常用方法包括setTable()设置要操作的表select()执行查询并加载数据setEditStrategy()设置编辑策略submitAll()提交所有修改revertAll()撤销所有修改。
③QSqlRelationalTableModel在QSqlTableModel基础上提供了对外键的支持可用于处理具有外键关系的数据库表通过setRelation()设置外键关系。 4.其它类
①QSqlRecord用于表示数据库表中的一条记录包含了记录的字段信息和数据通过QSqlQuery的record()方法获取。
②QSqlField用于表示数据库表中的一个字段包含了字段的名称、类型等信息通过QSqlRecord的field()方法获取。 三、数据库操作
1.主要流程
创建数据库连接对象并设置连接参数打开数据库连接编写并执行SQL语句对数据库进行一系列增删改查操作关闭数据库连接
示例
//查看支持驱动的数据库
QStringList strList QSqlDatabase::drivers();
qDebug()strList;//设置连接参数
QSqlDatabase db QSqlDatabase::addDatabase(QMYSQL);
db.setHostName(localhost);
db.setUserName(root);
db.setPassword(123456);
db.setDatabaseName(test01);//打开数据库
if(db.isOpen())qDebug()connect.;
elseqDebug()errordb.lastError().text();//执行sql语句
QSqlQuery query;
QString sql select * from students;
query.exec(sql);
while(query.next()){qDebug()query.value(id).toUInt()query.value(name).toString()query.value(gender).toString()query.value(uid).toUInt();
}//关闭数据库
db.close(); 2.绑定参数
使用绑定参数的方式向数据库表中增加数据
void insertStuInfo(QSqlDatabase db, QString name, QString gender, int uid)
{QSqlQuery insert(db);insert.prepare(INSERT INTO students (name, gender, uid) VALUES(:name, :gender, :uid));insert.bindValue(:name,name);insert.bindValue(:gender,gender);insert.bindValue(:uid,uid);bool res insert.exec();if(res)qDebug()successful;elseqDebug()error: insert.lastError().text();
} 3.事务操作
①开始事务
在进行一系列数据库操作之前可以使用QSqlDatabase的transaction()方法开始一个事务。如果事务开始成功返回true否则返回false。
②提交或回滚事务
如果所有操作都成功完成可以使用QSqlDatabase的commit()方法提交事务如果某个操作失败使用rollback()方法回滚事务这样可以撤销所有已执行的操作。 QString deleteSql DELETE FROM students WHERE name mike;db.transaction();bool res query.exec(deleteSql);if(res)db.commit();elsedb.rollback();