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

Qt SQL 核心类说明文档

Qt SQL 核心类说明文档

Qt 的 SQL 模块通过一组 QSql 前缀的核心类,为多种数据库系统提供统一的数据访问接口。该模块支持常见数据库(如 SQLite、MySQL、PostgreSQL 等),并结合 Qt 的 MVC 框架,方便地将数据与界面视图集成。


一、QSqlDatabase — 数据库连接管理类

功能:

  • 管理数据库连接对象;
  • 设置数据库驱动、主机、端口、用户名、密码等参数;
  • 打开和关闭数据库连接;
  • 支持多个连接实例(通过连接名称区分)。

示例代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("example.db");if (!db.open()) {qDebug() << "Database connection failed:" << db.lastError().text();
}

二、QSqlQuery — SQL 执行与结果遍历类

功能:

  • 执行 SQL 语句;
  • 支持预处理语句和绑定参数;
  • 遍历查询结果;
  • 可获取最后插入的主键 ID。

示例代码:

QSqlQuery query;
query.prepare("INSERT INTO users (name, age) VALUES (?, ?)");
query.addBindValue("Alice");
query.addBindValue(30);if (!query.exec()) {qDebug() << "Insert failed:" << query.lastError().text();
}

三、QSqlQueryModel — 只读数据模型类

功能:

  • 基于 SQL 查询结果的只读模型;
  • 可直接绑定到 QTableView 显示;
  • 不支持修改数据。

示例代码:

QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, age FROM users");
tableView->setModel(model);

四、QSqlTableModel — 可编辑数据模型类

功能:

  • 基于数据库表的可编辑模型;
  • 支持行插入、删除、修改;
  • 支持排序、过滤;
  • 可绑定 QTableView 实现数据可视化编辑。

示例代码:

QSqlTableModel *model = new QSqlTableModel;
model->setTable("users");
model->setEditStrategy(QSqlTableModel::OnFieldChange);  // 立即保存修改
model->select();
tableView->setModel(model);

五、QSqlRelationalTableModel — 关系型数据模型类

功能:

  • QSqlTableModel 的扩展;
  • 支持表与表之间的外键关系;
  • 可用外键字段的可读名称替代 ID 显示在视图中。

示例代码:

QSqlRelationalTableModel *model = new QSqlRelationalTableModel;
model->setTable("orders");
model->setRelation(1, QSqlRelation("customers", "id", "name"));  // 第1列外键关联
model->select();

六、QSqlRecord — 数据行对象

功能:

  • 表示查询结果或数据表的一行;
  • 支持按字段名或索引访问字段值;
  • 可用于读取或构造数据行。

示例代码:

QSqlRecord record = model->record(0);  // 第一行
QString name = record.value("name").toString();

七、QSqlField — 数据字段对象

功能:

  • 表示单个字段;
  • 包含字段名、数据类型、值、是否为空等属性;
  • 可用于设置和读取字段值。

八、QSqlError — 错误信息类

功能:

  • 提供数据库操作的错误信息;
  • 包括错误类型、数据库错误代码、驱动错误描述等;
  • 通常与 QSqlDatabaseQSqlQuery 联合使用。

示例代码:

if (!query.exec()) {qDebug() << query.lastError().text();
}

总结

类名作用是否支持编辑用途说明
QSqlDatabase管理数据库连接必须类,连接数据库的起点
QSqlQuery执行 SQL、预处理和遍历结果执行原始 SQL 语句的主要类
QSqlQueryModel显示查询结果,只读模型适用于 SELECT 查询展示
QSqlTableModel基于表的数据模型,支持增删改查表格视图编辑的首选模型类
QSqlRelationalTableModel支持外键关系的增强模型多表展示(如订单关联客户)
QSqlRecord表示一行数据记录单行数据的抽象封装
QSqlField表示一个字段字段级访问、设置、元信息操作
QSqlError提供错误报告信息调试和错误提示的必要工具

相关文章:

  • Chromium 134 编译指南 - Android 篇(八):开始编译
  • 【RabbitMQ】 RabbitMQ快速上手
  • java面向对象编程【高级篇】之特殊类
  • 大数据技术:从趋势到变革的全景探索
  • #Paper Reading# DeepSeek Math
  • 摩尔缠论课程合集完整版核心课程前置课程圈子问答星球圈子摩尔缠论三个阶段
  • Mysql的范式都有哪些?
  • C++负载均衡远程调用学习之异步消息任务功能与连接属性
  • AI优化SEO关键词实践路径
  • 扩散模型:了解ai生图的原理
  • (38)VTK C++开发示例 ---纹理裁剪
  • 如何提升个人的理解能力?
  • 【中间件】brpc_基础_execution_queue
  • HuggingFace常用加载模型方法
  • RabbitMQ 中的六大工作模式介绍与使用
  • Spring IoC 注解式开发全解析
  • linux netlink实现用户态和内核态数据交互
  • 什么是多租户系统
  • 实战探讨:为什么 Redis Zset 选择跳表?
  • UDP / TCP 协议
  • 巴称击落多架印度“阵风”战机,专家:小规模冲突巴空军战力不落下风
  • 古龙逝世四十周年|中国武侠文学学会与多所高校联合发起学术纪念活动
  • 印巴冲突升级,巴防长称已击落5架印度战机
  • 前瞻|中俄元首今年将首次面对面会晤,专家:国际变局中构建更坚韧的合作架构
  • 德国新一届联邦政府宣誓就职
  • 48岁黄世芳履新中国驻毛里求斯大使,曾在广西工作多年