Qt编译(MySQL)数据库驱动——MSVC版本vs2017-qt5.14.2-mysql5.7.34

64位

软件版本

参考 https://doc.qt.io/qt-5/sql-driver.html#qmysql

MySQL 5.7.34 版本

QT 5.14.2

https://download.qt.io/archive/qt/5.14/5.14.2/

qt-opensource-windows-x86-5.14.2.exe

VS 2017(社区版本)

----------------------------------------------------------------------------------

VS QT连接mysql,没有驱动,需要手动编译mysql

编译环境:

  • 系统: WIndows 10 64位
  • Qt版本:Qt5.14
  • 编译工具: visual studio 2017 、msvc2017_64的qmake

1将qmake所在路径加入环境变量PATH,如D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin

2更改mysql的pro文件

到目录D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,

编辑mysql.pro文件,将第6行QMAKE_USE += mysql注释掉
添加数据库sdk的include目录及库文件,保存并关闭

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 5.7/include"
LIBS+="C:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib"

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

3打开QT终端

进入mysql目录,执行qmake

Setting up environment for Qt usage...
Remember to call vcvarsall.bat to complete environment setup!

D:\Qt\Qt5.14.2\5.14.2\msvc2017_64>cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=C:/Program Files/MySQL/MySQL Server 5.7/include" "LIBS+=C:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib" mysql.pro

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql>

4打开Vs 2017 的命令行工具

进入目录,qmake,nmake即可

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.36
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

D:\Program Files (x86)\Microsoft Visual Studio\2017\Community>cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql>qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Server 5.7/include"    MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib"

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql>nmake

Microsoft (R) 程序维护实用工具 14.16.27045.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

        "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe" -f Makefile.Release all

Microsoft (R) 程序维护实用工具 14.16.27045.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

        link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /OPT:REF /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /VERSION:5.14 /OUT:..\plugins\sqldrivers\qsqlmysql.dll @C:\Users\mxpwa\AppData\Local\Temp\nmBC73.tmp
  正在创建库 ..\plugins\sqldrivers\qsqlmysql.lib 和对象 ..\plugins\sqldrivers\qsqlmysql.exp
        "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe" -f Makefile.Debug all

Microsoft (R) 程序维护实用工具 14.16.27045.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

        cl -BxD:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -std:c++17 -utf-8 /wd4530 /wd4577 -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\features\data\dummy.cpp 2>NUL >.moc\debug\moc_predefs.h
        D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL --compiler-flavor=msvc --include D:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/.moc/debug/moc_predefs.h -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/mkspecs/win32-msvc -ID:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql -I"C:/Program Files/MySQL/MySQL Server 5.7/include" -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtSql/5.14.2 -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtSql/5.14.2/QtSql -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtCore/5.14.2 -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtCore/5.14.2/QtCore -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtSql -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtCore -I"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include" -I"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"D:\Windows Kits\10\include\10.0.17763.0\ucrt" -I"D:\Windows Kits\10\include\10.0.17763.0\shared" -I"D:\Windows Kits\10\include\10.0.17763.0\um" -I"D:\Windows Kits\10\include\10.0.17763.0\winrt" -I"D:\Windows Kits\10\include\10.0.17763.0\cppwinrt" main.cpp -o .moc\debug\main.moc
        D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL --compiler-flavor=msvc --include D:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/.moc/debug/moc_predefs.h -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/mkspecs/win32-msvc -ID:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql -I"C:/Program Files/MySQL/MySQL Server 5.7/include" -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtSql/5.14.2 -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtSql/5.14.2/QtSql -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtCore/5.14.2 -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtCore/5.14.2/QtCore -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtSql -ID:/Qt/Qt5.14.2/5.14.2/msvc2017_64/include/QtCore -I"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include" -I"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"D:\Windows Kits\10\include\10.0.17763.0\ucrt" -I"D:\Windows Kits\10\include\10.0.17763.0\shared" -I"D:\Windows Kits\10\include\10.0.17763.0\um" -I"D:\Windows Kits\10\include\10.0.17763.0\winrt" -I"D:\Windows Kits\10\include\10.0.17763.0\cppwinrt" qsql_mysql_p.h -o .moc\debug\moc_qsql_mysql_p.cpp
        rc /NOLOGO -D_DEBUG -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -fo .obj\debug\qsqlmysqld_resource.res qsqlmysqld_resource.rc
        cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -std:c++17 -utf-8 /wd4530 /wd4577 -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 /Fd.obj\debug\qsqlmysqld.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -I. -I"C:\Program Files\MySQL\MySQL Server 5.7\include" -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtSql\5.14.2 -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtSql\5.14.2\QtSql -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtCore\5.14.2 -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtCore\5.14.2\QtCore -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtSql -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtCore -I.moc\debug -IC:\openssl\include -IC:\Utils\my_sql\mysql-5.7.25-winx64\include -IC:\Utils\postgresql\pgsql\include -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\win32-msvc -Fo.obj\debug\ @C:\Users\mxpwa\AppData\Local\Temp\nmC404.tmp
qsql_mysql.cpp
main.cpp
正在生成代码...
        cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -std:c++17 -utf-8 /wd4530 /wd4577 -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 /Fd.obj\debug\qsqlmysqld.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -I. -I"C:\Program Files\MySQL\MySQL Server 5.7\include" -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtSql\5.14.2 -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtSql\5.14.2\QtSql -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtCore\5.14.2 -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtCore\5.14.2\QtCore -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtSql -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtCore -I.moc\debug -IC:\openssl\include -IC:\Utils\my_sql\mysql-5.7.25-winx64\include -IC:\Utils\postgresql\pgsql\include -ID:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\win32-msvc -Fo.obj\debug\ @C:\Users\mxpwa\AppData\Local\Temp\nmCD8B.tmp
moc_qsql_mysql_p.cpp
        link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /SUBSYSTEM:WINDOWS /VERSION:5.14 /OUT:..\plugins\sqldrivers\qsqlmysqld.dll @C:\Users\mxpwa\AppData\Local\Temp\nmD1D2.tmp
  正在创建库 ..\plugins\sqldrivers\qsqlmysqld.lib 和对象 ..\plugins\sqldrivers\qsqlmysqld.exp

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql>

5结果

准备使用

将生成的qsqlmysql.dll、qsqlmysqld.dll拷贝到D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers目录中。

将MySQL目录(C:\Program Files\MySQL\MySQL Server 5.7\lib)下的 libmysql.dll 拷贝到D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin目录中。


32位

MySql下载 https://dev.mysql.com/downloads/mysql/   

1.选择下面的下载:

ZIP Archive    5.7.34    352.3M    
Download
(mysql-5.7.34-win32.zip)

2. 解压目录的D盘;D:\Program Files\mysql-5.7.34-win32

3. 在D:\Program Files\mysql-5.7.34-win32目录下添加data文件夹,文件夹为空;

在D:\Program Files\mysql-5.7.34-win32目录下添加my.ini文件,文件内容如下;

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=D:\\Program Files\\mysql-5.7.34-win32
datadir=D:\\Program Files\\mysql-5.7.34-win32\\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
innodb_flush_method=normal
 
[client]
#设置3306端口
port = 3306 


4. 管理员身份打开cmd,进入mysql目录;执行以下指令:

①mysqld --install,生成mysql实例,打开服务:默认服务是 MYSQL

②mysqld --initialize --user=mysql --console,此时终端显示随机密码,需要记住,后面会使用到:jExTKk

D:\Program Files\mysql-5.7.34-win32\bin>mysqld --initialize --user=mysql --console
2021-05-28T06:45:58.391511Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-05-28T06:45:58.648654Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-05-28T06:45:58.680322Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-05-28T06:45:58.754368Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5c246be9-bf80-11eb-ac0c-5405dbff339a.
2021-05-28T06:45:58.758354Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-05-28T06:46:00.767529Z 0 [Warning] CA certificate ca.pem is self signed.
2021-05-28T06:46:01.759448Z 1 [Note] A temporary password is generated for root@localhost: 5CwJ3>jExTKk

③开启mysql的服务(net start mysql)

5. 修改mysql密码:输入命令行mysql -uroot -p,输入临时密码即可登录数据库成功:

6. 修改root密码为123456:

ALTER USER 'root'@'localhost' IDENTIFIED BY '111111'; 

D:\Program Files\mysql-5.7.34-win32\bin>mysqld --initialize --user=mysql --console
2021-05-28T06:57:37.422704Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-05-28T06:57:37.612004Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-05-28T06:57:37.639414Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-05-28T06:57:37.705011Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: fcbfceef-bf81-11eb-aefe-5405dbff339a.
2021-05-28T06:57:37.709513Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-05-28T06:57:38.519012Z 0 [Warning] CA certificate ca.pem is self signed.
2021-05-28T06:57:38.675460Z 1 [Note] A temporary password is generated for root@localhost: l1(af*j>*.Sj

D:\Program Files\mysql-5.7.34-win32\bin>mysql -uroot -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.34

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';
Query OK, 0 rows affected (0.00 sec)

mysql> use mysql;
Database changed
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql>

1将qmake所在路径加入环境变量PATH,如D:\Qt\Qt5.14.2\5.14.2\msvc2017\bin

2更改mysql的pro文件

到目录D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

INCLUDEPATH+="D:/Program Files/mysql-5.7.34-win32/include"
LIBS+="D:/Program Files/mysql-5.7.34-win32/lib/libmysql.lib"

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

Setting up environment for Qt usage...
Remember to call vcvarsall.bat to complete environment setup!

D:\Qt\Qt5.14.2\5.14.2\msvc2017>cd D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql

D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql>

最后用VS编译的mysql驱动,加载 mysql.pro 项目,进行编译,即可完成

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yongwuzhijing800

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值