Qt安装MYSQL驱动
1 Qt配置MySQL驱动
在使用Qt连接数据库前需要确定当前Qt支持的数据库驱动模块有哪些。
1.1 Qt数据库驱动
Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,数据库驱动负责与不同的数据库进行通信。
1.1.1 Qt支持的数据库驱动
QDB2、QIBASE、QMYSQL、QOCI、QODBC、QPSQL、QSQLITE2、QSQLITE、QTDS
1.1.2 如何查看当前版本Qt所支持的数据库驱动
- 新建项目,在.pro文件中添加
QT += sql
- 在.cpp文件中,添加如下代码
qDebug() << QSqlDatabase::drivers();
- 运行程序,在 应用程序输出栏 中观察结果
2 安装MYSQL驱动 – MinGW编译器
2.1 下载MYSQL
https://dev.mysql.com/downloads/mysql/
将MySQL的环境C:\Program Files\MySQL\MySQL Server 8.1\bin
添加到环境变量中。
2.2 拷贝libmysql.dll和libmysql.lib文件
1)打开MySQL的安装目录下的lib文件夹,如:C:\Program Files\MySQL\MySQL Server 8.1\lib;
2)将该文件夹下的libmysql.dll和libmysql.lib文件拷贝到Qt的MinGW编译器的bin文件夹下,如:F:\QT\5.12.6\mingw73_64\bin
2.3 编译qsqlmysql.dll文件
1)需要利用QT的源码进行编译,在QT安装时需要选择 Source 来选择安装源码,此时在QT目录下可以找到 Src 文件夹;
2)进入 Qt安装目录Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql 文件夹,打开 mysql.pro 文件,进行修改;
TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin#mysql的lib路径
LIBS += -L$$quote(C:/Program Files/MySQL/MySQL Server 8.1/lib) -llibmysql#mysql的include路径
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)#mysql的include路径
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)include(../qsqldriverbase.pri)
2.4 构建并运行该文件
将当前编译器调整为MinGW编译器,构建.pro文件后运行,出现以下对话框即为编译成功:
如果构建过程中出现该错误:Cannot read xxx/qtsqldrivers-config.pri:No such file or directory,可不用管,直接运行。
2.5 复制qsqlmysql.dll和qsqlmysqld.dll文件
在QT的同级目录下,会出现 plugins 的文件夹,里面有刚刚编译好的库文件,将其中的qsqlmysql.dll和qsqlmysqld.dll文件复制到MinGW编译器的plugins\sqldrivers目录下。
此时MYSQL驱动即安装成功,可以在项目中使用 QSqlDatabase::drivers() 查看。
2.6 参考
安装MySQL驱动详细流程
3 安装MYSQL驱动 – MSVC编译器
3.1 下载MYSQL
3.2 拷贝libmysql.dll和libmysql.lib文件
1)打开MySQL的安装目录下的lib文件夹,如:C:\Program Files\MySQL\MySQL Server 8.1\lib;
2)将该文件夹下的libmysql.dll和libmysql.lib文件拷贝到Qt的MSVC2017_64编译器的bin文件夹下,如:F:\QT\5.12.6\msvc2017_64\bin
3.3 编译qsqlmysql.dll文件
1)需要利用QT的源码进行编译,在QT安装时需要选择 Source 来选择安装源码,此时在QT目录下可以找到 Src 文件夹;
2)进入 Qt安装目录Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql 文件夹,打开 mysql.pro 文件,进行修改;
TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin#mysql的lib路径
LIBS += -L $$quote(C:/Program Files/MySQL/MySQL Server 8.1/lib) -llibmysql#mysql的include路径
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)#mysql的include路径
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.1/include)include(../qsqldriverbase.pri)
3.4 构建并运行该文件
将当前编译器调整为MSVC2017_64编译器,构建.pro文件后运行,出现以下对话框即为编译成功:
3.5 可能遇到的问题
Cannot read xxx/qtsqldrivers-config.pri:No such file or directory
不用管,直接运行。
msvc-version.conf loaded but QMAKE_MSC_VER isn`t set
在MSVC2017_64编译器的目录F:\QT\5.12.6\msvc2017_64\mkspecs\common下打开msvc-version.conf文件,添加:
QMAKE_MSC_VER = 1900
...
#
# Version-specific changes
#
QMAKE_MSC_VER = 1900isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set")MSVC_VER = 8.0
...
3.6 复制qsqlmysql.dll、qsqlmysqld.dll文件
在mysql的同级目录下会生成plugins文件,里面有刚编译好的qsql文件,即F:\QT\5.12.6\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers 目录下的 qsqlmysql.dll和qsqlmysqld.dll文件 复制到MSVC2017_64编译器的plugins\sqldrivers目录下。