Qt完美解决QMYSQL driver not loaded

环境

系统:Win11
Qt版本:5.15.2
MYSQL版本:8.0.35
ODBC版本:8.3.0
构建套件:MinGW64

详情

之前由于重新换了电脑,在Qt中使用数据库的时候发现driver not loaded,困扰了我很久,去网上查了资料,原来是版本没有内置Mysql驱动,需要连接Mysql需要自己去编译。

测试是否有MYSQL驱动 

代码如下:

QStringList drivers = QSqlDatabase::drivers();
for(QString d : drivers){
   qDebug() << d;
}

 如果你的输出窗口有QMYSQL,说明你是有MYSQL驱动的,看一下用户名,密码等等配置是否正确。

如果没有,不要灰心,因为我原来也没有。 

我试了很多博主的方法,总结了两种方法成功连接MYSQL数据库

第一种方法

使用ODBC连接

ODBC下载 

官网:https://dev.mysql.com/downloads/connector/odbc/ 

点击后下载后 选择No thanks

 ODBC安装

 下载完成打开

 

这样安装就完成了。

ODBC设置

点击添加,找到我们需要的ANSI Driver

点击完成 

红色方框部分随便填
蓝色方框部分选择你注册MYSQL的用户名和密码
绿色方框部分填写你创建的数据库名字

填完后点击Test测试一下 ,出现以下图说明成功:

 

失败可以看看自己的用户名或者密码这些地方是否填写正确,如果不行可以参考第二种方法。

 测试ODBC代码

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("你设置的名字");//这里是你在ODBC里面Data Source Name设置的名字!!!
db.setUserName("你的用户名");
db.setPassword("你的密码");
bool ok = db.open();
if(ok){
    qDebug() << "success";
}else{
    qDebug() << "open failed cause: " << db.lastError().text();
}

 运行如果没有问题会出现,就完成了。

 注意!

一般安装MYSQL的时候他会自动的给你安装ODBC,可以在先在开始菜单搜索ODBC打开看看有没有我们需要的ANSI Driver

打开后可能没有我们需要的ANSI Driver,就需要去上面提到的官网下载了 

第二种方法  

第一步-找到目录 

 找到你Qt安装路径下目录如:

E:\WorkSoftware\QT5.15.2\5.15.2\Src\qtbase\src\plugins\sqldrivers

第二步-修改第一个文件

用Qt Creator打开mysql目录下的 mysql.pro

第三步-修改mysql.pro

在.pro文件中修改,需要的环境为你安装的mysql目录下,可以参考我的去对应

win32:LIBS += -LE:/WorkSoftware/mysql-8.0.35-winx64/lib -llibmysql
INCLUDEPATH += E:/WorkSoftware/mysql-8.0.35-winx64/include
DESTDIR = E:/WorkSoftware/mysql-8.0.35-winx64/include

第四步-修改第二个文件

返回上一级目录,修改qsqldriverbase.pri 文件内容

第五步-修改qsqldriverbase.pri

注释红框中的那行,添加一行新的。点击构建项目!!!不要点运行。

include(./qsqldriverbase.pri)

 然后你会看到多了一个文件

点击进去你会看到一个sqldrivers文件夹,再点进去就是我们所需要的依赖了!

将qsqlmysql.dll文件复制到如:

E:\WorkSoftware\QT5.15.2\5.15.2\mingw81_64\plugins\sqldrivers

再将MYSQL的lib目录下 libmysql.dll复制到bin环境目录下

 这个时候基本上就没问题了!

打开Qt去测试一下

在你的.pro文件中添加sql 

第六步-测试MYSQL代码 

去构造函数中测试一下。

参考代码如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("你的数据库名字");//这里是你在MYSQL中建立的数据库名称
db.setUserName("你的用户名");
db.setPassword("你的密码");
bool ok = db.open();
if(ok){
    qDebug() << "success";
}else{
    qDebug() << "open failed cause: " << db.lastError().text();
}

连接成功!!!

如果该文章有帮助到你,请给个赞吧,谢谢!

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值