版本
1.qt:6.4 (安装好mingw、source源码)
2.mysql:5.7.22(这个什么版本都行,只是可能路径不同)
3.win10
1.安装Cmake-gui
链接: Cmake-gui下载.
2.配置环境变量
D:\Qt\Tools\mingw1120_64\bin
D:\Qt\6.4.0\mingw_64
C:\Program Files\CMake\bin
Cmake-gui 进行编译
1.配置编译目录
Source code:D:/Qt/6.4.0/Src/qtbase/src/plugins/sqldrivers
Build:D:/Qt/6.4.0/Src/qtbase/src/plugins/sqldrivers/build
注意配置的目录是在sqldrivers目录下
2.第一次生成
3.选择编译器
MinGW Makefiles(这个在底下)
4.第一次生成结果图(可以看到,是不包含mysql的)
5.配置mysql
H:/mysql5.7.22/include
H:/mysql5.7.22/lib/libmysql.dll
路径不要包含空格,不要带有中文,不然可能找不到dll或者头文件
6.第二次生成
7.生成dll文件
命令行进入到build文件夹
C:\Users\Administrator>cd /d D:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers\build
D:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers\build>mingw32-make
[ 4%] Automatic MOC for target QMYSQLDriverPlugin
[ 4%] Built target QMYSQLDriverPlugin_autogen
Scanning dependencies of target QMYSQLDriverPlugin
Consolidate compiler generated dependencies of target QMYSQLDriverPlugin
[ 31%] Built target QMYSQLDriverPlugin
[ 36%] Automatic MOC for target QODBCDriverPlugin
[ 36%] Built target QODBCDriverPlugin_autogen
Scanning dependencies of target QODBCDriverPlugin
Consolidate compiler generated dependencies of target QODBCDriverPlugin
[ 63%] Built target QODBCDriverPlugin
[ 68%] Automatic MOC for target QSQLiteDriverPlugin
[ 68%] Built target QSQLiteDriverPlugin_autogen
Scanning dependencies of target QSQLiteDriverPlugin
Consolidate compiler generated dependencies of target QSQLiteDriverPlugin
[100%] Built target QSQLiteDriverPlugin
D:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers\build>
8.生成的dll文件
在D:\Qt\6.4.0\Src\qtbase\src\plugins\sqldrivers\build\plugins\sqldrivers目录下
找到qsqlmysql.dll、qsqlmysql.debug,将这两个以及libmysql.dll添加到D:\Qt\6.4.0\mingw_64\plugins\sqldrivers目录下
最后是这样的
3.验证
创建一个简单的qt项目进行验证
Cmake编译: 修改cmakelists
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Widgets QuickWidgets Sql)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets QuickWidgets Sql)
....
target_link_libraries(JS_services_controller PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::QuickWidgets
Qt${QT_VERSION_MAJOR}::Sql)
qmake编译:修改.prc
QT+=sql
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlError>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost"); //连接本地主机
db.setPort(3306);
db.setDatabaseName("数据库名");
db.setUserName("admin");
db.setPassword("123456");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "link success");
}
else {
QMessageBox::information(this, "infor", "link failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
}
MainWindow::~MainWindow()
{
delete ui;
}
可能会有以下报错:
解决方案:
将D:\Qt\6.4.0\mingw_64\plugins\sqldrivers文件夹下的qsqlmysql.dll、qsqlmysql.debug、libmysql.dll添加到项目的生成目录下即可