一文带你Qt数据库从入门到实战

小明 2025-05-02 09:05:17 6

文章目录

    • 示例图
    • 主要实现功能点
    • 入门
      • SQLite
      • QSqlTableModel
      • 实战
        • 导入
        • 导出
        • ���结

          示例图

          主要实现功能点

          1. 导入导出与初始化数据库
          2. 数据的增删改查
          3. 数据的撤销与保存
          4. 数据的排序与过滤
          5. 图片的自定义行为
          6. 控件与数据之间的交互
          • 文末我会提供源码给大家参考

            入门

            • 简单的入门QT数据库我们从了解QSQLite与QSqlTableModel开始。

              SQLite

              • 一个轻量级的数据库引擎,它的数据库是一个单一文件,因此非常适合移动应用和嵌入式设备。Qt 通过 SQL 模块提供对 SQLite 的接口,可以执行创建、查询、更新和删除(CRUD)操作,以及管理数据库连接和事务。

                以下是使用 Qt SQLite 数据库的基本步骤:

                1. 包含必要的头文件:
                #include 
                #include 
                #include 
                
                1. 创建数据库连接:
                QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
                db.setDatabaseName("your_database.db");
                if (!db.open()) {
                    qDebug() 
                    qDebug() 
                    qDebug() 
                    while (query.next()) {
                        int id = query.value(0).toInt();
                        QString name = query.value(1).toString();
                        int age = query.value(2).toInt();
                        qDebug() 
                    qDebug() 
                    qDebug() 
                    qDebug() 
                    qDebug() 
                    qDebug()  // 打开数据表
                    QString aFile = QFileDialog::getOpenFileName(this, "选择数据库文件", "",
                  "SQL Lite数据库(*.db *.db3)");
                    if (aFile.isEmpty()) // 选择SQL Lite数据库文件
                        return;
                    // 打开数据库
                    DB = QSqlDatabase::addDatabase("QSQLITE"); // 添加 SQL LITE数据库驱动
                    DB.setDatabaseName(aFile);                 // 设置数据库名称
                    //    DB.setHostName();//若是需要用户密码
                    //    DB.setUserName();
                    //    DB.setPassword();
                    if (!DB.open()) // 打开数据库
                    {
                        QMessageBox::warning(this, "错误", "打开数据库失败",
                                             QMessageBox::Ok, QMessageBox::NoButton);
                        return;
                    }
                    // 打开数据表
                    openTable();
                }
                - `openTable()`是非常关键的函数,里面交代了`QSqlTableModel`的设置,代码过长,在源码中。
                
                    if (tabModel == nullptr)
                        return;
                    // 获取原始数据库的结构
                    QSqlRecord record = tabModel-record();
                    // 断开现有Qt管理的数据库连接,并连接到一个新的数据库文件
                    QString connectionName = "NewConnection";
                    QSqlDatabase newDB = QSqlDatabase::addDatabase("QSQLITE", connectionName);
                    QString saveFilePath = QFileDialog::getSaveFileName(nullptr,
                         "Save File",
                         QString(), // 默认保存的文件夹路径,这里使用默认值
                         "SQL Lite数据库(*.db *.db3)");
                    newDB.setDatabaseName(saveFilePath);
                    if (!newDB.open())
                        return;
                    QSqlQuery query(newDB);
                    QString createTableQuery = QString("CREATE TABLE %1 (").arg(tabModel-tableName()); // 创造表
                    for (int i = 0; i 
The End
微信