使用QT6.7.2连接到MySQL数据库

作者使用的是QT6.7.2搭配MySQL9.0, 但本教程应该是通用的; 需要注意的是QT以及MySQL的位数一定要确保一致, 都为32位或者都为64位

​源码下载

首先确保正确安装了QT以及MySQL数据库, 并且你能够找到二者的安装目录
我们知道QT目前没有提供MySQL的驱动, 所以需要我们手动编译驱动, 并且将编译好的驱动添加到QT编译器中才能正常连接到MySQL数据库
而编译驱动需要用到QT源码, 所以我们首先需要下载源码, 如果你已经下载好了, 可以直接跳过这一步骤

点击打开QT Maintenance Tool
在这里插入图片描述
选择添加或移除组件
在这里插入图片描述
选中Sources, 等待下载并安装完成
在这里插入图片描述

文件准备

安装好源码后, 从MySQL安装目录

C:\Program Files\MySQL\MySQL Server 9.0\lib


复制libmysql.dlllibmysql.lib到地址

C:\Qt\6.7.2\mingw_64\bin

从MySQL安装目录

C:\Program Files\MySQL\MySQL Server 9.0\bin

在这里插入图片描述
复制libcrypto-3-x64.dlllibssl-3-x64.dll到地址

C:\Qt\6.7.2\mingw_64\bin

注意将地址改为你的地址, 都添加完成后如下
在这里插入图片描述

驱动编译

接下来将MySQL中includelib两个文件夹拷贝到另一个临时的文件夹中, 用于接下来的编译
在这里插入图片描述
临时文件夹地址

C:\Users\chenphxx\Documents\qt-mysql

然后打开QT Source源码中的数据库驱动地址

C:\Qt\6.7.2\Src\qtbase\src\plugins\sqldrivers

使用记事本打开配置文件.cmake.conf
在这里插入图片描述
将刚刚新建的临时文件夹中两个文件夹的地址添加到配置文件中, 添加的文件为includelib/libmysql.lib, 这里需要替换为你的地址
在这里插入图片描述

SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "C:/Users/chenphxx/Documents/qt-mysql/include")
SET(MySQL_LIBRARY "C:/Users/chenphxx/Documents/qt-mysql/lib/libmysql.lib")

修改完成后, 使用QT打开项目, 选择CMakeLists.txt打开

C:\Qt\6.7.2\Src\qtbase\src\plugins\sqldrivers

在这里插入图片描述
随后点击锤子图标编译release版本
在这里插入图片描述
编译完成后, 将得到的数据库驱动添加到QT编译器的路径下, 打开build文件夹, 选择plugins->sqldrivers

C:\Qt\6.7.2\Src\qtbase\src\plugins\sqldrivers\build\Desktop_Qt_6_7_2_MinGW_64_bit-Release\plugins\sqldrivers

将下图所示的两个文件qsqlmysql.dllqsqlmysql.debug复制到QT编译器的数据库驱动文件夹下
在这里插入图片描述
目标地址

C:\Qt\6.7.2\mingw_64\plugins\sqldrivers

添加完成后, 目录应该是像下面这样
在这里插入图片描述

连接测试

在项目.pro配置中添加

QT += sql 

使用下面这段程序来测试是否能够正常连接到数据库

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include "ui_MainWindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    qDebug() << QSqlDatabase::drivers();  // 控制台输出支持的数据库驱动
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  // 创建数据库对象

    // 数据库参数
    db.setHostName("127.0.0.1");
    db.setPort(3306);  // 替换为你的端口
    db.setDatabaseName("database");  // 替换为你的数据库
    db.setUserName("root");  // 替换为你的用户名
    db.setPassword("123456");  // 替换为你的数据库密码

    // 打开数据库
    if (db.open())
        qDebug() << "数据库连接成功";
    else
        qDebug() << "数据库连接失败";
}

MainWindow::~MainWindow()
{
    delete ui;
}

在应用程序输出窗口, 结果应该如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值