在源码下找到你的mysql
我的在F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql
你的mysql文件应该在…\qtbase\src\plugins\sqldrivers\mysql,前面的路径是你自己将他放在的位置,后边的应该一致
当你构建成功后,界面是这样的:
具体内容:
TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlINCLUDEPATH += $$quote("C:\Program Files\MySQL\MySQL Server 8.0\include") #本机mysql的include目录
LIBS += -L$$quote("C:\Program Files\MySQL\MySQL Server 8.0\lib") -lmysql #本机mysql的lib目录
#注:当你去找的你电脑上的mysql路径时,你会发现大概率你的路径和我的路径是一致的,这应该和mysql的安装方式有关吧!OTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin#指定这个文件的绝对地址,具体这个路径的位置你可以看下图"qsqldriverbase.pri的路径"
include(F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\qsqldriverbase.pri)
qsqldriverbase.pri的路径:其实很好找,就在mysql文件夹的上级目录中
具体内容:
QT = core core-private sql-private# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)include(./configure.pri)PLUGIN_TYPE = sqldrivers
load(qt_plugin)DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
执行后,F盘下会出现plugins文件夹,进入F:\plugins\sqldrivers中,可以看到qsqlmysql.dll文件;
那么F:\plugins\sqldrivers怎么找呢?
我的qt环境装在F:
而F:\plugins就生成在你的qt环境的同级目录 或者 qt环境的上级目录中
将F:\plugins\sqldrivers目录下的qsqlmysql.dll文件复制到F:\Qt\5.14.1\mingw73_64\plugins\sqldrivers
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QStringList list = QSqlDatabase::drivers();qDebug() << list;//打印支持的sql驱动
}MainWindow::~MainWindow()
{delete ui;
}
我们发现,输出结果中出现了"QMYSQL", “QMYSQL3”,说明:大功告成!
注:我用的是mingw64位,mingw32位不可用,msvc2017_64也不可用
Qt缺少Mysq驱动QMYSQL driver not loaded
Windows环境下Qt缺少Mysql驱动的问题解决方案
接下来是讲:msvc2017_64没有mysql驱动怎么办?(与第一部分有少许不同)
如果你是做完第一部分,然后再做第二部分,那你就要把操作过的第一部分的源码删掉 ; 如果你是直接看的第二部分,那就不用删,找到你的源码即可
删除重新解压源码,源码的下载地址:qt源码下载
找到源码
在源码下找到你的mysql
我的在F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql
你的mysql文件应该在…\qtbase\src\plugins\sqldrivers\mysql,前面的路径是你自己将他放在的位置,后边的应该一致
TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)#该路径是mysql的头文件路径
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"
#这是MySQL的库文件路径/
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"#为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
#所以说,一会编译成功了,我要的文件就在F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql\mysql\lib里面
#你就直接写成一个你知道的路径,一会去那里找就行了(代号:1)
DESTDIR = ../mysql/lib/
QT = core core-private sql-private# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
文件路径:
F:\Qt\5.14.1\msvc2017_64\mkspecs\common\msvc-version.conf
在前面加一句QMAKE_MSC_VER = 1909(对应自己的编译器版本,里面会提示的,我是vs2017):
编译成功之后,
找到F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql\mysql\lib
也就是刚才写的(代号:1)那个路径…/mysql/lib/
再说明一下吧,其实就是"我们正在构建的mysql这个项目"路径下的/mysql/lib/
打开如图:
把qsqlmysql.dll和qsqlmysqld.dll复制到F:\Qt\5.14.1\msvc2017_64\plugins\sqldrivers下,并且把mysql的lib目录下的libmysql.dll复制到F:\Qt\5.14.1\msvc2017_64\bin下就可以运行了。
#include "DBTest_msvc2017_64.h"
#include
#include DBTest_msvc2017_64::DBTest_msvc2017_64(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QStringList list = QSqlDatabase::drivers();qDebug() << list;//打印支持的sql驱动QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setDatabaseName("数据库名称"); // 数据库名称db.setHostName("主机名"); // 主机名db.setUserName("数据库,用户名"); // 数据库,用户名db.setPassword("数据库,密码"); // 数据库,密码db.setPort(3306); // 数据库,端口
}DBTest_msvc2017_64::~DBTest_msvc2017_64()
{}
ok!大工告成!
Qt连接MySQL数据驱动(绝对有效)
Qt缺少Mysq驱动QMYSQL driver not loaded
上一篇:C++STL set/multiset容器的区别、pair对组创建、set容器排序、set排序 内置数据类型和自定义数据类型高级排序
下一篇:详细介绍java8利用新接口LocalDate,LocalTime, LocalDateTime方便快捷处理日期