QT5.12连接MySQL的实现

 更新时间:2025年02月25日 09:38:28   作者:SweerItTer  
本文主要介绍了QT5.12连接MySQL的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

1.下载并安装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");

一行解决,简单明了

到这应该就没问题了

到此这篇关于QT5.12连接MySQL的实现的文章就介绍到这了,更多相关QT5.12连接MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多

相关文章

  • C++实现多人聊天室

    C++实现多人聊天室

    这篇文章主要为大家详细介绍了C++实现多人聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C++实现N个骰子的点数算法

    C++实现N个骰子的点数算法

    这篇文章主要介绍了C++实现N个骰子的点数算法,用两种方法实现了该功能,是非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • C++中新手容易犯的十种编程错误汇总

    C++中新手容易犯的十种编程错误汇总

    一段C语言代码,在编译、链接和运行的各个阶段都可能会出现问题,下面这篇文章主要给大家介绍了关于C++中新手容易犯的十种编程错误的相关资料,需要的朋友可以参考下
    2021-10-10
  • C语言实现直角坐标转换为极坐标的方法

    C语言实现直角坐标转换为极坐标的方法

    这篇文章主要介绍了C语言实现直角坐标转换为极坐标的方法,涉及C语言进行三角函数与数值运算相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • 深入理解 Qt 中的事件循环

    深入理解 Qt 中的事件循环

    Qt 事件循环是 GUI 应用响应各类操作的核心机制,通过持续处理事件队列中的事件来实现异步响应,本文解析了事件循环的工作原理,下面就来详细的介绍一下,感兴趣的可以了解一下
    2026-02-02
  • C++超详细讲解内存空间分配与this指针

    C++超详细讲解内存空间分配与this指针

    this 指针在C++类和对象中是个很方便实用的关键字,可以简化对象成员属性的调用,使代码表达的含义更加准确;在之前的学习中我们都可以判断变量所占内存空间大小,那么我们创建的类对象所占的内存空间怎么计算呢?想知道this的妙用和类对象占用的内存空间就来跟我学习吧
    2022-05-05
  • 一文搞懂C++11万能引用和右值引用

    一文搞懂C++11万能引用和右值引用

    本文主要介绍了C++11万能引用和右值引用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 关于C++的强制类型转换浅析

    关于C++的强制类型转换浅析

    C++的强制类型转换是我们在日常开发中经常会遇到的,下面这篇文章主要给大家介绍了关于C++强制类型转换的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-09-09
  • C/C++ 中 mdspan 介绍与使用示例

    C/C++ 中 mdspan 介绍与使用示例

    mdspan是C++23引入的多维数组视图,不管理内存仅提供视图,支持任意维度和灵活布局,适用于科学计算等领域,其优点包括零成本抽象、类型安全和可组合性,但需确保底层数据有效且编译器支持,本文介绍C/C++ 中 mdspan 介绍与使用,感兴趣的朋友一起看看吧
    2025-07-07
  • C语言魔塔游戏的实现代码

    C语言魔塔游戏的实现代码

    这篇文章主要介绍了C语言魔塔游戏的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02

最新评论