QT5.15.1连接MySQL8.0.28(32位/64位)最佳实践(文章底部有编译好的包和编译依赖包)
准备工作下载:
Qt5.15.1源代码下载地址:
https://download.qt.io/archive/qt/5.15/5.15.1/submodules/qtbase-everywhere-src-5.15.1.tar.xz
MySQL8.0.28(只有64位版本)下载地址:MySQL :: Download MySQL Community Server
(mysql-connector-c-6.1.11-win32.zip)下载地址:MySQL :: Download MySQL Connector/C (Archived Versions)
一.QT编写64位应用程序连接MySQL8.0.28
1.安装MySQL8.0.28(只有64位版本),可以去网盘下载初始化工具。安装启动即可。
2.解压qtbase-everywhere-src-5.15.1.tar.xz。
3.打开工程qtmysqlapp\qtbase-everywhere-src-5.15.1\src\plugins\sqldrivers\mysql\mysql.pro。
4.修改PRO选项:
win32 {#新增该项库引入
contains(QT_ARCH, i386) {
message("x86 build")
## Windows x86 (32bit) specific build here
LIBS += -l"C:/Utils/my_sql/mysql-5.7.25-win32/lib/libmysql"
} else {
## Windows common build here
!contains(QMAKE_HOST.arch, x86_64) {
message("x86 build")
## Windows x86 (32bit) specific build here
LIBS += -l"C:/Utils/my_sql/mysql-5.7.25-win32/lib/libmysql"
} else {
message("x86_64 build")
## Windows x64 (64bit) specific build here
LIBS += -l"C:/Utils/my_sql/mysql-5.7.25-winx64/lib/libmysql"
}
}
}
#QMAKE_USE += mysql #注释此行
5.修改plugins\sqldrivers\qsqldriverbase.pri。
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)
6.拷贝MySQL8.0.28安装目录下的include和lib目录所有文件拷贝到C:/Utils/my_sql/mysql-5.7.25-winx64目录下。
7.编译生成(目录在编译磁盘分区的根目录下的plugins\sqldrivers\目录下)。
-rwxr-xr-x 1 aaa 197121 50688 Jan 22 19:56 qsqlmysql.dll*
-rw-r--r-- 1 aaa 197121 2024 Jan 22 19:55 qsqlmysql.lib
-rwxr-xr-x 1 aaa 197121 139264 Jan 22 19:56 qsqlmysqld.dll*
-rw-r--r-- 1 aaa 197121 2040 Jan 22 19:55 qsqlmysqld.lib
8.拷贝这四个文件到QT安装目录Qt\5.15.1\msvc2019_64\plugins\sqldrivers目录下即可。
9.新建QtMySQLDemo项目:
.pro修改:
QT += core gui sql
mainwindow.cpp修改:
#include <qsqldatabase.h>
#include <qsqlerror.h>
#include <qdebug.h>
#include <qmessagebox.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setConnectOptions();
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("testdb");
db.setUserName("test");
db.setPassword("123456");
if (!db.open())
{
qDebug()<<"open failed!" << db.lastError().text() << "\n";
printf("open failed!\n");
QMessageBox::warning(this,
QString::fromLocal8Bit("Message"),
db.lastError().text(),
QMessageBox::Ok,
QMessageBox::Ok);
}
else
{
qDebug()<<"open success!";
printf("open success!\n");
QMessageBox::information(this,
QString::fromLocal8Bit("Message"),
QString::fromLocal8Bit("open success"),
QMessageBox::Ok,
QMessageBox::Ok);
}
}
10.编译后拷贝C:\Utils\my_sql\mysql-5.7.25-winx64\lib目录下所有dll到exe运行目录。
11.运行,测试Ok。
二.QT编写32位应用程序连接MySQL8.0.28(不同于64位,32位需要做更多配置)
1.安装MySQL8.0.28(只有64位版本),可以去网盘下载初始化工具。(此配置跨平台可支持使用)。
安装配置如下:
my.cnf修改:(32位目前使用6.11版本链接库,无ssl支持,故跳过SSL安全隧道)
[mysqld]
skip_ssl
mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。
从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。
//本地支持
ALTER USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
//远程支持
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
2.解压qtbase-everywhere-src-5.15.1.tar.xz。
3.打开工程qtmysqlapp\qtbase-everywhere-src-5.15.1\src\plugins\sqldrivers\mysql\mysql.pro。
4.修改PRO选项:
win32 {#新增该项库引入
contains(QT_ARCH, i386) {
message("x86 build")
## Windows x86 (32bit) specific build here
LIBS += -l"C:/Utils/my_sql/mysql-5.7.25-win32/lib/libmysql"
} else {
## Windows common build here
!contains(QMAKE_HOST.arch, x86_64) {
message("x86 build")
## Windows x86 (32bit) specific build here
LIBS += -l"C:/Utils/my_sql/mysql-5.7.25-win32/lib/libmysql"
} else {
message("x86_64 build")
## Windows x64 (64bit) specific build here
LIBS += -l"C:/Utils/my_sql/mysql-5.7.25-winx64/lib/libmysql"
}
}
}
#QMAKE_USE += mysql #注释此行
5.修改plugins\sqldrivers\qsqldriverbase.pri。
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)
6.解压mysql-connector-c-6.1.11-win32.zip并拷贝mysql-connector-c-6.1.11-win32目录下的include和lib目录所有文件拷贝到C:/Utils/my_sql/mysql-5.7.25-win32目录下。
7.编译生成(目录在编译磁盘分区的根目录下的plugins\sqldrivers\目录下)
-rwxr-xr-x 1 aaa 197121 50688 Jan 22 19:56 qsqlmysql.dll*
-rw-r--r-- 1 aaa 197121 2024 Jan 22 19:55 qsqlmysql.lib
-rwxr-xr-x 1 aaa 197121 139264 Jan 22 19:56 qsqlmysqld.dll*
-rw-r--r-- 1 aaa 197121 2040 Jan 22 19:55 qsqlmysqld.lib
8.拷贝这四个文件到QT安装目录Qt\5.15.1\msvc2019\plugins\sqldrivers目录下即可。
9.新建QtMySQLDemo项目:
.pro修改:
QT += core gui sql
mainwindow.cpp修改:
#include <qsqldatabase.h>
#include <qsqlerror.h>
#include <qdebug.h>
#include <qmessagebox.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setConnectOptions();
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("testdb");
db.setUserName("test");
db.setPassword("123456");
if (!db.open())
{
qDebug()<<"open failed!" << db.lastError().text() << "\n";
printf("open failed!\n");
QMessageBox::warning(this,
QString::fromLocal8Bit("Message"),
db.lastError().text(),
QMessageBox::Ok,
QMessageBox::Ok);
}
else
{
qDebug()<<"open success!";
printf("open success!\n");
QMessageBox::information(this,
QString::fromLocal8Bit("Message"),
QString::fromLocal8Bit("open success"),
QMessageBox::Ok,
QMessageBox::Ok);
}
}
10.编译后拷贝C:\Utils\my_sql\mysql-5.7.25-win32\lib目录下所有dll到exe运行目录。
11.运行,测试Ok。
================================================
备用下载地址,依赖及编译好的库网盘下载地址:
链接: https://pan.baidu.com/s/12Kpe0MaZUA8d8kmr0VjTRA 提取码:
本帖有隐藏内容,请您回复后查看。
本帖有隐藏内容,请您回复后查看。