开发者

QT5.12连接MySQL的实现

开发者 https://www.devze.com 2025-04-10 15:14 出处:网络 作者: SweerItTer
目录1.下载并安装mysql2.配置环境变量3.QT部分前提条件测试补充为了方便和简洁,我选择的是最简单的方法去完成(虽然因为一堆报错搞崩了心态)
目录
  • 1.下载并安装mysql
  • 2.配置环境变量
  • 3.QT部分
    • 前提条件
  • 测试
    • 补充

为了方便和简洁,我选择的是最简单的方法去完成(虽然因为一堆报错搞崩了心态)

1.下载并安装MySQL

MySQL官网

QT5.12连接MySQL的实现

选择Downloads

下拉找到社区版

QT5.12连接MySQL的实现

因为是在window上运行MySQL,便选择Windows安装包

QT5.12连接MySQL的实现

QT5.12连接MySQL的实现

这个界面可以选择版本,默认就行,两里面挑一个(网络稳定可以选第一个)

这里选择第二个下载

QT5.12连接MySQL的实现

只是白嫖并且没有社区要求的话,直接选这个就行

下好后会有一个msi文件,双击运行,之后会在C:\Program Files (x86)\MySQL下安装一编程

MySQL Inst编程aller for WiUbPyuPqOndows

(现在用不到,重装和安装别的版本的时候会用到)

QT5.12连接MySQL的实现

选择需要的版本(第一次运行可能只有一个8.0),点击右箭头,选中版本

QT5.12连接MySQL的实现

这里会有自定义安装路径和数据库路径的设置,这里修改文件夹名字里的空格为-(或者默认)

QT5.12连接MySQL的实现

一路下一步到这里

QT5.12连接MySQL的实现

(因为已经装了8.0,3306口占用了)

这里也是下一步

QT5.12连接MySQL的实现

这里输入root用户的密码,记得住就行

下一步,一直点点到结束

QT5.12连接MySQL的实现

2.配置环境变量

复制mysql的安装路径,这里是C:\Program Files\MySQL\MySQL-Server-8.0

QT5.12连接MySQL的实现

win+i打开设置>单击系统>下拉点击系统信息>在设备规格单击高级系统设置

QT5.12连接MySQL的实现

QT5.12连接MySQL的实现

变量名无所谓,够直观就行(中文不行)

QT5.12连接MySQL的实现

根据序号点击,在第三步,新建的是你自己的变量名,且记住带百分号  %<变量名>%/bin(不打码了,懒)

然后win+r,输入cnm,键入MySQL,回车,不出意料,应该是这样的

QT5.12连接MySQL的实现

这时键入命令

mysql -uroot -p

输入安装时设置的密码,

QT5.12连接MySQL的实现

3.QT部分

前提条件

安装时选择了source,验证安没安装,只要打开qt的安装目录,选择版本号文件夹,看看有没有src文件夹

QT5.12连接MySQL的实现

这里或许会有别的什么文件夹,不影响,有src文件夹,就继续,没有就下吧(建议直接重装)

1.复制MySQL安装目录

2.打开mysql.pro  路径一般在

..\Src\qtbase\src\plugins\sqldrivers\mysql

前面的两个点是你的qt版本号目录

QT5.12连接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
include(../qsqldriverbase.pri)

win32:LIBS  += "C:\Program Files\MySQL\MySQL-Server-8.0\lib\libmysql.lib"
INCLUDEPATH += "C:\Program Files\MySQL\MySQL-Server-8.0\include"

DESTDIR = ../mysql/lib/

这里需要根据具体情况修改的是这里的两个路径

你需要把C:\Program Files\MySQL\MySQL-Server-8.0这一坨换成第一步复制的mysql路径

QT5.12连接MySQL的实现

修改完后选择qsqldriverbase

修改 qsqldriverbase.pri  编程客栈;     

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

这里注释了第4行,追加了第5行

这里准备就绪后先别急

1.先检查环境里是否包含qt安装目录下的bin文件夹(运行编译器必要的)

2.返回上一级目录,检查是否有build开头的文件夹(有就删了)

到这,单击小锤子

QT5.12连接MySQL的实现

如果没有报错,build的绿条会一路到底

QT5.12连接MySQL的实现

右键pro文件,在资源管理器里打开

QT5.12连接MySQL的实现

不出意外,会出现一个lib文件夹

QT5.12连接MySQL的实现

编程客栈

打开它

QT5.12连接MySQL的实现

复制dll文件

打开目录  D:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\sqldrivers,粘贴文件:

QT5.12连接MySQL的实现

再到MySQL安装目录里C:\Program Files\MySQL\MySQL-Server-8.0\lib,复制  libmysql.dll和libmysql.lib  到  D:\Qt\Qt5.12.12\5.12.12\msvc2017_64\bin

QT5.12连接MySQL的实现

QT5.12连接MySQL的实现

到这,差不多了(理论上)

重启qt

测试

写一下简单的链接数据库的代码

#include "widget.h"
#include "ui_widget.h"

#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>

Widget::Widget(QWidget *parent)
	: QWidget(parent)
	, ui(new Ui::Widget)
{
	ui->setupUi(this);

	QSqlDatabase db1 = QSqlDatabase();
	db = db1.addDatabase("QMYSQL");

	db.setHostName("127.0.0.1");
	db.setPassword("root");
	db.setUserName("root");
	db.setDatabaseName("sys");

	if(!db.open()){
		qDebug() << db.lastError().text();
	}
	else{
		qDebug() << "OK";
		return;
	}
}

Widget::~Widget()
{
	delete ui;
}

运行测试

QT5.12连接MySQL的实现

补充

如果有看部分qt教学课程,看到代码是

QSqlDatabase db = QSqlDatabase();
db.addDatabase("QMYSQL");

这会报错,“Driver not loaded Driver not loaded”

这段代码的问题在于,首先创建了一个 QSqlDatabase 对象的实例,但没有给它传递任何参数。这意味着没有指定要使用的数据库驱动。然后,使用 addDatabase() 方法添加一个数据库驱动,但这并不会给 db 对象创建一个新的连接。相反,它会返回一个新的 QSqlDatabase 对象,而该对象才是我们真正需要的

还有另一种方法

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

一行解决,简单明了

到这应该就没问题了

到此这篇关于QT5.12连接MySQL的实现的文章就介绍到这了,更多相关QT5.12连接MySQL内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号