当前位置: 首页 > news >正文

Qt Sql 模块中的函数详解

Qt Sql 模块是 Qt 框架中用于数据库访问的库。它的主要目标是提供一个独立于具体数据库系统的统一 API。

Qt Sql 模块的功能主要围绕三个核心任务:连接数据库、执行查询,以及将查询结果集成到 Qt 的模型/视图框架中。


🌟 Qt Sql 模块核心功能及其函数详解

1. 📂 数据库连接和管理 (QSqlDatabase)

QSqlDatabase 类用于创建、管理和释放与数据库的连接。它是访问任何数据库的第一步。

核心函数 (Function)作用描述示例用法
addDatabase()添加数据库连接。 静态函数。指定数据库驱动(如 “QSQLITE”, “QMYSQL”)和连接名称。QSqlDatabase::addDatabase("QSQLITE", "my_conn");
setDatabaseName()设置数据库文件/名称。 对于 SQLite,这是数据库文件的路径;对于服务器,这是数据库名称。db.setDatabaseName("data.db");
setHostName() / setPort()设置连接参数。 用于连接到远程数据库服务器(如 MySQL, PostgreSQL)。db.setHostName("localhost");
setUserName() / setPassword()设置身份验证信息。 用于登录数据库。db.setUserName("user");
open()建立连接。 尝试使用配置好的参数建立到数据库的实际连接。if (!db.open()) { ... }
close()断开连接。 关闭数据库连接并释放资源。db.close();
database()获取连接对象。 静态函数,通过连接名称获取已添加的连接实例。QSqlDatabase db = QSqlDatabase::database("my_conn");
isValid()检查连接有效性。 检查对象是否代表一个有效的、已配置的数据库连接。if (db.isValid()) { ... }
tables()获取表列表。 返回当前数据库中所有表的名称列表 (QStringList)。QStringList list = db.tables();
transaction() / commit() / rollback()事务管理。 用于启动、提交或回滚一组 SQL 操作,确保数据完整性。db.transaction(); if (error) db.rollback(); else db.commit();

2. 📝 SQL 查询执行 (QSqlQuery)

QSqlQuery 类用于执行 SQL 语句、遍历查询结果、以及进行数据绑定。

核心函数 (Function)作用描述示例用法
QSqlQuery()构造函数。 创建一个用于执行查询的对象,通常与一个 QSqlDatabase 连接关联。QSqlQuery query(db);
exec()执行查询。 执行 SQL 语句。对于 SELECT 语句,返回 true 表示查询成功。query.exec("SELECT * FROM users");
next()前进到下一条记录。 用于遍历查询结果集。必须在 exec() 之后调用。while (query.next()) { ... }
value()获取当前字段的值。 通过字段的索引或名称获取当前记录中某个字段的数据。QVariant name = query.value("name");
prepare()准备查询语句。 用于预编译带占位符的 SQL 语句,防止 SQL 注入。query.prepare("INSERT INTO users (name) VALUES (?)");
bindValue()绑定占位符的值。 将实际数据绑定到 prepare() 语句中的占位符。query.bindValue(0, "Alice");
lastError()获取错误信息。 返回查询执行失败时的详细错误信息对象。qDebug() << query.lastError().text();

3. 📊 模型/视图集成 (QSqlTableModel, QSqlQueryModel)

这些类将 SQL 查询结果作为 模型 暴露给 Qt 的 视图 控件(如 QTableView),实现数据显示和编辑的自动化。

A. QSqlQueryModel (只读模型)
核心函数 (Function)作用描述示例用法
setQuery()设置查询语句。 使用一个 SELECT 语句作为数据源。该模型是只读的。model.setQuery("SELECT id, name FROM employees");
setHeaderData()设置列标题。 更改视图中显示的列标题文本。model.setHeaderData(0, Qt::Horizontal, "Employee ID");
B. QSqlTableModel (可读写模型)
核心函数 (Function)作用描述示例用法
setTable()设置数据源表。 将模型绑定到数据库中的一个特定表。model.setTable("employees");
select()填充模型数据。 执行 SELECT 操作,从绑定表中加载数据。model.select();
setFilter()设置过滤条件。 应用 SQL WHERE 子句来过滤显示的数据。model.setFilter("salary > 50000");
setEditStrategy()设置编辑策略。 决定何时将更改写入数据库(如 QSqlTableModel::OnManualSubmit)。model.setEditStrategy(QSqlTableModel::OnFieldChange);
submitAll() / revertAll()提交/撤销更改。 将模型中缓存的修改批量提交到数据库,或撤销所有未提交的修改。model.submitAll();

总结:

Qt Sql 模块通过这三个核心类实现了完整的数据库操作流程:

  1. QSqlDatabase 配置和连接数据库。
  2. QSqlQuery 执行自定义的 SQL 语句和遍历结果。
  3. QSqlTableModel / QSqlQueryModel 将数据库数据集成到 GUI 界面中,实现高效的数据展示。
http://www.dtcms.com/a/614016.html

相关文章:

  • 堆的实现与应用:从基础操作到排序与 Top-K 问题
  • Python应用指南:利用高德地图API获取实时天气
  • 移动网站开发教程网站开发有哪些服务
  • 体彩网站建设校园文化建设网站素材
  • Java绘图技术
  • R语言基础(包含资料)
  • 系统思考:打破惯性
  • 数据结构入门 (十一):“自我平衡”的艺术 —— 详解AVL树
  • 网站建设html东莞浩智网站建设多少钱
  • 【工具】文件传输工具_wget·aria2·ssh·scp
  • Python-PDF文件生成水印
  • 站长之家官网查询电子商务网站开发教程论文
  • openGauss:多核时代企业级数据库的性能与高可用新标杆
  • C++ 中dynamic_cast使用详解和实战示例
  • Git笔记---简单介绍与基本使用
  • php网站开发项目经验如何写wordpress是什么软件
  • 手机网站排名优化软件怎么查网站开发者联系方式
  • 菲律宾有做网站的吗人人开发网站
  • 部署Cloudflare免费图床——免费开源强大
  • Vue Router 3 升级 4:写法、坑点、兼容一次讲透
  • JSP 、JSTL、MVC分层思想——以登录验证为例
  • 新操作系统。
  • Hutool-JSON 工具类超全使用指南:告别 JSON 处理繁琐操作
  • 445 端口(SMB 服务)完整渗透流程总结
  • 咔咔做受视频网站摄影师网站建设
  • 大连建设网网址是多少啊重庆seo网站设计
  • TDengine 字符串函数 POSITION 用户手册
  • 燕郊建设局网站网站排名首页前三位
  • Docker容器使用手册——进阶篇(下)
  • C++入门指南:开启你的编程之旅