在使用Qt连接数据库前需要确定当前Qt支持的数据库驱动模块有哪些。
Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,数据库驱动负责与不同的数据库进行通信。
QDB2、QIBASE、QMYSQL、QOCI、QODBC、QPSQL、QSQLITE2、QSQLITE、QTDS
QT += sql
qDebug() << QSqlDatabase::drivers();
https://dev.mysql.com/downloads/mysql/
将MySQL的环境C:\Program Files\MySQL\MySQL Server 8.1\bin
添加到环境变量中。
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
1)需要利用QT的源码进行编译,在QT安装时需要选择 Source 来选择安装源码,此时在QT目录下可以找到 Src 文件夹;
2)进入 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
OTHER_FILES += mysql.json
PLUGIN_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)
将当前编译器调整为MinGW编译器,构建.pro文件后运行,出现以下对话框即为编译成功:
如果构建过程中出现该错误:Cannot read xxx/qtsqldrivers-config.pri:No such file or directory,可不用管,直接运行。
在QT的同级目录下,会出现 plugins 的文件夹,里面有刚刚编译好的库文件,将其中的qsqlmysql.dll和qsqlmysqld.dll文件复制到MinGW编译器的plugins\sqldrivers目录下。
此时MYSQL驱动即安装成功,可以在项目中使用 QSqlDatabase::drivers() 查看。
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
1)需要利用QT的源码进行编译,在QT安装时需要选择 Source 来选择安装源码,此时在QT目录下可以找到 Src 文件夹;
2)进入 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
OTHER_FILES += mysql.json
PLUGIN_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)
将当前编译器调整为MSVC2017_64编译器,构建.pro文件后运行,出现以下对话框即为编译成功:
不用管,直接运行。
在MSVC2017_64编译器的目录F:\QT\5.12.6\msvc2017_64\mkspecs\common下打开msvc-version.conf文件,添加:
QMAKE_MSC_VER = 1900
...
#
# Version-specific changes
#
QMAKE_MSC_VER = 1900
isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set")
MSVC_VER = 8.0
...
在mysql的同级目录下会生成plugins文件,里面有刚编译好的qsql文件,即F:\QT\5.12.6\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers 目录下的 qsqlmysql.dll和qsqlmysqld.dll文件 复制到MSVC2017_64编译器的plugins\sqldrivers目录下。