环境
系统: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();
}
本文讲述了在更换电脑后,如何在Qt中解决因版本问题导致的Mysql驱动未加载的问题,介绍了使用ODBC连接和直接编译Mysql驱动的两种方法,包括ODBC的安装设置和Qt中的配置代码示例。

9104

被折叠的 条评论
为什么被折叠?



