QT5.12连接MySQL

本文详细描述了如何在Windows上下载安装MySQL,配置环境变量,以及在QT项目中集成MySQL数据库,包括处理可能出现的报错和配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.下载并安装MySQL

MySQL访问MySQL官网

选择Downloads

下拉找到社区版

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

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

这里选择第二个下载

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

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

MySQL Installer for Windows

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

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

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

一路下一步到这里

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

这里也是下一步

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

下一步,一直点点到结束

2.配置环境变量

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

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

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

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

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

这时键入命令

mysql -uroot -p

输入安装时设置的密码,

3.QT部分

前提条件

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

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

1.复制MySQL安装目录

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

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

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

双击.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路径

修改完后选择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开头的文件夹(有就删了)

到这,单击小锤子

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

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

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

打开它

复制dll文件

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

再到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

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

重启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;
}

运行测试

补充

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

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

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

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

还有另一种方法

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

一行解决,简单明了

到这应该就没问题了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值