Qt完美解决QMYSQL driver not loaded

Qt完美解决QMYSQL driver not loaded

码农世界 2024-06-05 后端 106 次浏览 0个评论

环境

系统: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驱动的,看一下用户名,密码等等配置是否正确。

Qt完美解决QMYSQL driver not loaded

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

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

第一种方法

使用ODBC连接

ODBC下载 

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

Qt完美解决QMYSQL driver not loaded点击后下载后 选择No thanks

Qt完美解决QMYSQL driver not loaded ODBC安装

 下载完成打开

 Qt完美解决QMYSQL driver not loaded

Qt完美解决QMYSQL driver not loaded

Qt完美解决QMYSQL driver not loaded

Qt完美解决QMYSQL driver not loaded

这样安装就完成了。

ODBC设置

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

Qt完美解决QMYSQL driver not loaded

点击完成 

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

Qt完美解决QMYSQL driver not loaded

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

 Qt完美解决QMYSQL driver not loaded

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

 测试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();
}

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

Qt完美解决QMYSQL driver not loaded

 注意!

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

Qt完美解决QMYSQL driver not loaded

打开后可能没有我们需要的ANSI Driver,就需要去上面提到的官网下载了 Qt完美解决QMYSQL driver not loaded

第二种方法  

第一步-找到目录 

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

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

Qt完美解决QMYSQL driver not loaded

第二步-修改第一个文件

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

Qt完美解决QMYSQL driver not loaded

第三步-修改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

Qt完美解决QMYSQL driver not loaded

第四步-修改第二个文件

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

Qt完美解决QMYSQL driver not loaded

第五步-修改qsqldriverbase.pri

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

include(./qsqldriverbase.pri)

Qt完美解决QMYSQL driver not loaded

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

Qt完美解决QMYSQL driver not loaded

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

Qt完美解决QMYSQL driver not loaded

将qsqlmysql.dll文件复制到如:

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

Qt完美解决QMYSQL driver not loaded

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

Qt完美解决QMYSQL driver not loadedQt完美解决QMYSQL driver not loaded

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

打开Qt去测试一下

在你的.pro文件中添加sql 

Qt完美解决QMYSQL driver not loaded

第六步-测试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();
}

连接成功!!!

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

转载请注明来自码农世界,本文标题:《Qt完美解决QMYSQL driver not loaded》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,106人围观)参与讨论

还没有评论,来说两句吧...

Top