Qt - 配置MySQL驱动

 

环境介绍:

windows10

QT5.14.2 编译器MingGW64-bit

数据库:5.7.42-winx64

 

1. 下载并安装mysql

请前往mysql官方网站下载与安装:https://dev.mysql.com/downloads/mysql/

 

2. 拷贝libmysql.dll

2.1 将mysql/lib内的动态库文件libmysql.dll复制,拷贝到Qt5.14.2/5.14.2/mingw73_64/bin的文件夹内

 

3. 检查mysql驱动

3.1 检查QT目录中Qt5.14.2/5.14.2/mingw73_64/plugins/sqldrivers目录下,观察是否存在qsqlmysql.dll文件以下就是没有安装驱动的情况。

 

4. 编译qsqlmysql.dll

4.1 需要利用QT的源码进行编译,所以QT在安装的时候需要选择source选择来安装源码,安装好之后在QT目录下可以找到Src文件夹,里面就是Qt源码

 

4.2 然后我们找到Qt源码所在的目录Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,打开mysql.pro

 

4.3 然后修改mysql.pro文件:

示例1:

TARGET = qsqlmysql

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

#QMAKE_USE += mysql  #注意要注释掉

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin


# mysql的include路径
INCLUDEPATH += $$quote(E:/mysql-5.7.42-winx64/include)
# mysql的include路径
DEPENDPATH += $$quote(E:/mysql-5.7.42-winx64/include)
# mysql的lib路径
LIBS += -L $$quote(E:/mysql-5.7.42-winx64/lib) -llibmysql

include(../qsqldriverbase.pri)

示例2:

TARGET = qsqlmysql

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

#QMAKE_USE += mysql

#加上MySql路径
INCLUDEPATH += E:/mysql-5.7.36-winx64/include
DEPENDPATH += E:/mysql-5.7.36-winx64/include
win32:LIBS += -LE:/mysql-5.7.36-winx64/lib -llibmysql


OTHER_FILES += mysql.json

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

 

4.4 然后直接编译,出现对话框即为编译成功:

 

4.5 然后在QT的同级目录下,若是默认地址则是在E盘中,会出现plugins的文件夹,这就是我们刚刚编译出来的库文件。

 

 

4.6 打开 sqldrivers 文件夹,可以看到编译出来的库文件qsqlmysql.dll

 

4.7 拷贝库文件qsqlmysql.dll到QT目录中Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers目录下:

最后mysql的驱动即安装成功!

 

5. 添加测试代码

5.1 首先,确保你的.pro文件中包含了对数据库的支持:

QT += sql

其次使用函数查看qt目前支持的驱动:

qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();//查看QT支持的数据库驱动

运行结果:

 

5.2 测试代码:

#include "widget.h"

#include <QApplication>
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;

    // 初始化数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost"); // 数据库服务器地址
    db.setDatabaseName("test");  // 数据库名
    db.setUserName("root");      // 用户名
    db.setPassword("123456");  // 密码

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

    // 在此处进行数据库操作...

    // 关闭数据库连接
    db.close();

    w.show();
    return a.exec();
}

运行结果:

 

 

 

6. 编译msvc版本驱动

(补充一个编译msvc版本的数据库驱动方法)

6.1 如果想要在vs+qt环境下连接mysql数据库,则需要编译一个msvc版本的数据库驱动,然后放到msvs2017_64目录下,如下图所示:

环境:

windows10

vs2019

QT5.14.2 编译器msvc

数据库:5.7.42-winx64

 

6.2 qt构建套件的配置,分别有32位和64位的。如果自动检测没有显示构建套件,则可以手动添加一个。

32bit:

 

64bit:

 

6.3 添加msvc2017构建套件后,点击运行,编译出msvc版本的数据库驱动

 

如果编译的时候报了“如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS” 错误的话 

如果你在使用 Qt 的 QMake 构建系统,可以在项目的 .pro 文件中添加以下代码:

QMAKE_CXXFLAGS += /FS
QMAKE_LFLAGS += /FS

如图所示:

 

6.4 打开 sqldrivers 文件夹,可以看到编译出来的库文件qsqlmysql.dll

6.5 拷贝库文件qsqlmysql.dll到QT目录中Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers目录下:

最后使用vs创建一个qt项目,添加测试代码编译+运行即可。

 

posted @ 2022-07-17 09:29  [BORUTO]  阅读(501)  评论(0编辑  收藏  举报