目录
📚 一、Qt SQL 模块简介
🔌 二、QSqlDatabase:数据库连接管理
⚙️ 三、QSqlQuery:执行 SQL 语句
🏗️ 四、实战演练:创建库、建表与基本操作
🔗 五、数据库与 UI 模型关联
💡 六、总结与最佳实践
在 Qt + C++ 开发中,数据库操作是常见需求。本文将从零开始,系统讲解如何使用 QSqlDatabase、QSqlQuery进行数据库编程,并最终将数据与 UI 模型关联起来。
📚 一、Qt SQL 模块简介
Qt 通过 Qt SQL 模块 提供了一套统一的数据库访问接口,支持多种数据库,如:
-
SQLite: 轻量级本地数据库,无需独立服务,非常适合桌面和移动应用。
-
MySQL / MariaDB
-
PostgreSQL
-
ODBC: 用于连接 SQL Server 等其他数据库。
要使用数据库功能,需在项目文件(.pro)中添加:
QT += sql
并在代码中引入相关头文件:
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QtSql/QSqlRecord>
🔌 二、QSqlDatabase:数据库连接管理
QSqlDatabase类用于管理数据库连接,它本身不执行 SQL,而是作为执行 SQL 的“会话”或“连接句柄”。
1. 连接数据库的基本步骤
1. 添加数据库驱动,并指定连接名(可选)
// 1. 添加数据库驱动,并指定连接名(可选)
QSqlDatabase db = QSqlDatabase::addDatabase(\”QSQLITE\”, \”mydb\”);
// 2. 设置连接参数
db.setDatabaseName(\”test.db\”); // 对于 SQLite,这是数据库文件名
db.setHostName(\”localhost\”); // 对于 MySQL/PostgreSQL
db.setUserName(\”root\”);
db.setPassword(\”123456\”);
//3. 打开数据库连接
if (!db.open())
{
qDebug() << \”无法打开数据库:\” << db.lastError().text();
return -1;
}
qDebug() << \”数据库连接成功!\”;
-
驱动类型: \”QSQLITE\”, \”QMYSQL\”, \”QPSQL\”等。
-
连接名: 用于在同一应用中管理多个数据库连接,若不指定则使用默认连接。
2. 常用方法
-
db.open(): 打开连接。
-
db.close(): 关闭连接。
-
db.isOpen(): 检查连接是否已打开。
-
db.isValid(): 检查数据库驱动是否有效。
-
QSqlDatabase::database(\”mydb\”): 根据连接名获取数据库连接对象。</


