[id-00011] Qt连接MySQL数据库[QMYSQL driver not loaded]

本文详细介绍了如何在Qt5.15.2环境中解决QMYSQLDriver未加载的问题,包括编译MySQL源码、配置mysql.pro文件、生成库文件,并提供了一个简单的连接测试示例。
摘要由CSDN通过智能技术生成

0. 前言(必看,花点时间!)

  • 本人Qt是5.15.2版本,编译器是Qt Creator 11.0.2。当然其他版本和编译器也按照下面相同操作也是可以的,重点是编译出来MySQL的库文件罢了,因为网上不一定好找到相同版本且现有的MySQL驱动。
  • 如果第一次看见这篇文章,那么下面的方法会非常容易让人上手,你只要有QT环境和MySQL就行,下面的操作按步骤走就行。
  • 如果没有安装MySQL,先 -->点我安装MySQL

1. 错误提示

想必大家遇到的情况与下面类似,重点还是没有Qt可以直接使用的MySQL库文件。因为Qt默认提不供现成可用的MySQL驱动,这里需要手动去编译一下,后面就可以复制粘贴随便用了(但是要注意编译器类型以及其版本要相同)。

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
MySQL连接错误。原因: "Driver not loaded Driver not loaded" //这段是自己打印的,即db.lastError().text()

2. 编译MySQL源码 ★

2.1 打开mysql.pro并配置编译器以及其版本

  • 打开mysql.pro文件
    文件路径:Qt安装路径\版本号\Src\qtbase\src\plugins\sqldrivers\mysql
    比如我的文件路径是:D:\software\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
    在这里插入图片描述
  • 配置编译器以及其版本
    选msvc还是mingw编译器,以及选32位还是64位,自己根据需求来编译就行,不同版本编译出来不互通的哈。如果不知道怎么选且偏向个人开发的话用mingw64就行。
    在这里插入图片描述

2.2 配置mysql.pro文件

按照如下配置就行。

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
include(../qsqldriverbase.pri)


#设置的MySQL的头文件和库文件(去自己MySQL安装的位置找)
INCLUDEPATH += "D:/software/mysql-8.0.30-winx64/include" #包含一下MySQL的头文件
LIBS += "D:/software/mysql-8.0.30-winx64/lib/libmysql.lib" #包含一下MySQL的libmysql.lib库文件

#设置库文件存放目录
#可以自行指定,也可以直接给个绝对路径
DESTDIR = "../mysql/dll"

原mysql.pro文件内容

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
include(../qsqldriverbase.pri)

2.3 生成qsqlmysql库文件

这里直接点击运行即可生成库文件
=>报错You need to set an executable in the custom run configuration.,不用管,此时就已经生成我们需要的库文件了。
在这里插入图片描述
在这里插入图片描述

注意: 如果你没有指定绝对路径,这里需要知道源码编译默认输出路径。根据图片红色框中的构建目录去找就行
在这里插入图片描述

到这里qsqlmysql的库文件都编译好了!!!


3. 拷贝相关文件 ★★★

这里需要将MySQL库文件和编译好的qsqlmysql库文件复制到它发挥价值的地方,注意编译器的版本号,不要复制错了!也不要搞错路径了!但凡少复制了还是会报文章开头的错误。看下面步骤。

  • MySQL的库文件(去自己MySQL安装的位置找)
    在这里插入图片描述
  • 编译好的qsqlmysql库文件
    在这里插入图片描述

4. 代码连接MySQL简单测试

// 这只是一个简单的连接实例哈
void DataBase::connect()
{
	//addDatabase参数1:数据库驱动名称。
	//addDatabase参数2:数据库连接名称。操作单个数据库无需指定,默认即可。
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("127.0.0.1"); //数据库部署位置的地址(本机默认127.0.0.1或localhost)
    db.setDatabaseName("teachManage"); //需要连接的数据库名称
    db.setUserName("root"); //数据库登陆用户名 
    db.setPassword("root"); //数据库登陆用户密码
    if(db.open())
        qDebug()<<"MySQL连接成功...";
	else
        qDebug()<<"MySQL连接错误。原因:"<<db.lastError().text();
}

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天鹅打架了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值