QT编译MySQL驱动教程(Windows/Linux)

1. 基础环境

  • QT 任意版本,需添加源码组件
  • Windows平台,下载MySQL Server,需选择一致的版本,不要求安装,仅用到头文件和库文件
  • Linux平台,可在线安装mysql开发工具包,包含有头文件和库文件
bash 复制代码
sudo apt install libmysqlclient-dev

有些教程用的是MySQL Connector/C工具包中的动态库来构建的,但经测试发现无法解决ssl的问题,不推荐

2. 路径确认

参考并确定以下路径

Windows平台

  • QT的安装路径:D:\Dev\Qt5

  • MySQL头文件路径:D:\Dev\MySQL84\include

  • MySQL库文件路径:D:\Dev\MySQL84\lib

  • QT的MySQL驱动源码路径:D:\Dev\Qt5\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
    Linux平台

  • QT的安装路径:/home/user/Qt5.14.2/

  • MySQL头文件路径:/usr/local/include/mysql/

  • MySQL库文件路径:/usr/lib/x86_64-linux-gnu/

  • QT的MySQL驱动源码路径:/home/user/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/

3. 修改项目配置

用QtCreator打开MySQL源码路径下的mysql.pro文件,选择对应的工具链

修改mysql.pro和qsqldriverbase.pri两个项目文件配置

bash 复制代码
TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

# 1、注释该行
# QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

# 2、添加MySQL动态库路径
# Window平台
INCLUDEPATH +="D:\Dev\MySQL84\include"
LIBS += -L"D:\Dev\MySQL84\lib" -lmysql
#Linux平台
#INCLUDEPATH +="/usr/include/mysql/"
#LIBS += -L"/usr/lib/x86_64-linux-gnu/" -lmysqlclient

# 3、编译到指定路径
DESTDIR = $$PWD/libdirver
bash 复制代码
QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
# 1、注释该行
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
# 2、添加该行
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

4. 构建生成库文件

执行构建,完成构建后,右键.pro文件打开mysql驱动源码同级目录,在libdirver下查看确认库文件

Windows平台

Linux平台

linux平台报错问题

原因是权限不足,只需要在控制台使用管理员权限启动qtcreator即可(生成的库文件权限属于root用户)

bash 复制代码
sudo /home/user/Qt5.14.2/Tools/QtCreator/bin/qtcreator

5. 拷贝库文件

将libdirver/下编译生成的库文件拷贝至QT对应编译工具链的/plugins/sqldrivers文件夹下

Windows平台下:D:/Dev/Qt5/5.14.2/mingw73_64/plugins/sqldrivers/
Linux平台下:/home/user/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers/

在Windows平台下,还需要将MySQL Server安装目录下的lib/libmysql.dll拷贝至QT对应编译工具链的\bin\下

而在Linux平台下,/usr/lib/x86_64-linux-gnu/包含在在系统环境路径中可被QT搜索到,所以不需要额外操作

Windows平台下:D:/Dev/Qt5/5.14.2/mingw73_64/bin/libmysql.dll

6. 测试

新建控制台项目(需选择相同的编译工具链),在.pro项目配置文件中添加sql项

bash 复制代码
QT += sql

运行代码

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

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

    // 打印 Qt 支持的所有数据库驱动
    qDebug() << QSqlDatabase::drivers();
    // 测试连接 MySQL(替换为你的 MySQL 账号密码)
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("test"); // 替换为你的数据库名
    db.setUserName("root");     // 替换为你的 MySQL 用户名
    db.setPassword("123456");   // 替换为你的 MySQL 密码
    db.setPort(3306);

    if (db.open()) {
        qDebug() << "MySQL connection success!";
        db.close();
    } else {
        qDebug() << "MySQL connection failed:" << db.lastError().text();
    }

    return a.exec();
}
相关推荐
光泽雨1 分钟前
mysql中的事务
数据库·mysql
黑牛儿2 分钟前
MySQL 备份与恢复详细步骤(新手版)
数据库·mysql·dba
sunfdf3 分钟前
在 Windows 11 上恢复已删除文件的 10 大方法 [2026]
windows
fundoit3 分钟前
MySQL问题收集
数据库·人工智能·mysql·智能体
计算机学姐5 分钟前
基于SpringBoot的在线学习网站平台【个性化推荐+数据可视化+课程章节学习】
java·vue.js·spring boot·后端·学习·mysql·信息可视化
特立独行的猫a9 分钟前
HarmonyOS鸿蒙PC的QT应用开发:(二、开发环境搭建及第一个HelloWorld)
qt·华为·harmonyos·鸿蒙·鸿蒙pc
史迪仔011210 分钟前
[QML] QT5和QT6 圆角的不同设置方法
前端·javascript·qt
Chasing__Dreams18 分钟前
Mysql--基础知识点--94.1--嵌套子查询转关联查询
数据库·mysql
qq_2837200519 分钟前
Python 操作 MySQL 数据库全解:增删改查、事务、连接池与性能优化
数据库·python·mysql
爱码小白20 分钟前
MySQL 系统函数专项练习题
数据库·python·mysql