1.环境:
MySQL:8.0(C:\Program Files\MySQL\MySQL Server 8.0)、VS2017(社区版,D:\Microsoft Visual Studio\2017)、Qt5.14.2,使用MSVC64位(D:\Qt\Qt5.14.2\5.14.2\msvc2017_64)
2.步骤
2.1 在环境变量PATH中添加
D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin
,如果后面2.3步骤中报错
Project ERROR: Cannot run compiler 'cl'. Output:
再添加一个
D:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
注意这里是64位版本的,32位的路径要改一下,这里是要用到该路径下的cl.exe文件
2.2 修改
D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql下的mysql.pro文件的内容(Src文件夹是Qt安装时选择的组件“Source”的安装目录,如果没有,则需要给Qt添加组件),修改后内容如下
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
INCLUDEPATH+="C:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS+="C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
2.3. 打开
,依次执行
cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:/Program Files/MySQL/MySQL Server 8.0/include" "LIBS+=C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib" mysql.pro
这里可能会出现 无法找到文件.pri,can’t read xxx等的问题,忽略。
再打开
,依次执行
cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Server 8.0/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
nmake
此时会生成很多行代码,比如正在生成代码…正在创建库…,大概半分钟就ok了。
2.4. 在
D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers
文件下会生成几个文件
将qsqlmysql.dll、qsqlmysqld.dll拷贝D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers目录下。将C:\Program Files\MySQL\MySQL Server 8.0\lib下的 libmysql.dll 拷贝到D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin目录中
在Qt程序中添加如下代码,查看可用数据库驱动是否有MySQL,如果有,则控制台输出
“QMYSQL”
“QMYSQL3”
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << driver;