qt creator新手入门以及结合sql server数据库开发

文章目录

  • [Qt Creator + SQL Server 入门](#Qt Creator + SQL Server 入门)
    • [1. 准备环境](#1. 准备环境)
      • [(1)Qt 端](#(1)Qt 端)
      • [(2)SQL Server 端](#(2)SQL Server 端)
      • (3)驱动
    • [2. Qt 项目中引入 SQL](#2. Qt 项目中引入 SQL)
    • [3. 连接 SQL Server 示例](#3. 连接 SQL Server 示例)
    • [4. 注意事项](#4. 注意事项)
    • [5. GUI 结合示例](#5. GUI 结合示例)

Qt Creator + SQL Server 入门

1. 准备环境

(1)Qt 端

  • 安装 Qt + Qt Creator(你说用 MSVC 2022,没问题)
  • 确认安装了 Qt SQL 模块 (Qt5/Qt6 默认包含 QtSql

(2)SQL Server 端

  • 安装 SQL Server(Express/Developer 都行)
  • 确认开启了 TCP/IP 协议(SQL Server 配置管理器 → 网络配置)
  • 确认账号密码能正常登录(比如 sa / 123456

(3)驱动

Qt 访问数据库需要 ODBCQODBC 驱动

  • Windows 下 SQL Server 推荐:QODBC
  • 如果用 QODBC,要确保 Windows 已经安装了 ODBC 驱动(一般自带)

2. Qt 项目中引入 SQL

.pro 文件中加上:

pro 复制代码
QT += sql

3. 连接 SQL Server 示例

cpp 复制代码
#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    // 使用 QODBC 驱动
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");

    // 数据源字符串
    QString dsn = QString("DRIVER={SQL Server};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4;")
                  .arg("127.0.0.1")   // SQL Server 地址
                  .arg("TestDB")      // 数据库名
                  .arg("sa")          // 用户名
                  .arg("123456");     // 密码

    db.setDatabaseName(dsn);

    if (!db.open()) {
        qDebug() << "数据库连接失败:" << db.lastError().text();
        return -1;
    } else {
        qDebug() << "数据库连接成功!";
    }

    // 查询数据
    QSqlQuery query(db);
    if (query.exec("SELECT TOP 5 id, name FROM Users")) {
        while (query.next()) {
            int id = query.value(0).toInt();
            QString name = query.value(1).toString();
            qDebug() << id << name;
        }
    } else {
        qDebug() << "查询失败:" << query.lastError().text();
    }

    db.close();
    return a.exec();
}

4. 注意事项

  • 数据库驱动问题

    如果报错 QODBC driver not loaded,要检查 Qt 是否编译了 ODBC 插件。

    • 解决办法:确认 plugins/sqldrivers/qsqlodbc.dll 存在。
  • SQL Server 认证

    • SQL Server 默认可能只允许 Windows 身份验证,要改成 SQL Server + Windows 混合验证
  • 中文乱码问题

    • 建议数据库表字段用 NVARCHAR,Qt 里用 QString

5. GUI 结合示例

如果你在 Qt Widgets 里用,可以用 QTableView 直接显示:

cpp 复制代码
QSqlTableModel *model = new QSqlTableModel(this, db);
model->setTable("Users");
model->select();

QTableView *view = new QTableView(this);
view->setModel(model);
view->show();

这样就能在窗口里看到数据库表格。


⚡ 推荐学习路径:

  1. 先用 QSqlDatabase + QSqlQuery 练习 CRUD(增删改查)
  2. 再用 QSqlTableModel + QTableView 做 UI 显示
  3. 如果要嵌入式 HMI,可以通过 API 接口 转发数据库数据,而不是直接连 SQL Server
相关推荐
轩情吖5 分钟前
Qt常用控件之QSpinBox
开发语言·c++·qt·控件·桌面级开发·qspinbox·微调框
掘根5 分钟前
【Qt】输入类控件2——SpinBox,DateEdit,TimeEdit,Dial,Slider
开发语言·qt
wshzrf10 分钟前
【Java系列课程·Java学前须知】第3课 JDK,JVM,JRE的区别和优缺
java·开发语言·jvm
铅笔侠_小龙虾12 分钟前
JVM 深入研究 -- 详解class 文件
java·开发语言·jvm
Humbunklung14 分钟前
C# 使用应用RSA和ECC进行数字签名和签名验证
开发语言·c#·rsa·ecc
Larry_Yanan25 分钟前
QML学习笔记(十四)QML的自定义模块
开发语言·笔记·qt·学习·ui
练习时长一年32 分钟前
ApplicationContext接口实现(二)
java·开发语言
wdfk_prog1 小时前
[Linux]学习笔记系列 -- lib/sort.c 通用的排序库(Generic Sorting Library) 为内核提供标准的、高效的排序功能
linux·运维·c语言·笔记·stm32·学习·bug
灵性花火1 小时前
针对多工程情况下,Qwidget的ui文件的Stylesheet找不到图片的问题
开发语言·qt
shark_dev1 小时前
C/C++ 指针详解与各种指针定义
c语言·c++