数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库

news/2024/9/23 5:23:11/

前言

自从Oracle收购了Mysql对其进行了商业化之后,如今Mysql已经不能算一个完全开源的数据库了,而这明显是与Qt开源理念相违背的,所以Qt6中取消了对Mysql的默认支持,Qt6内不在内置Mysql的驱动(QMYSQL),这也导致了我们如果想要连接Mysql数据库必须用Qt的源码过程自动编译生成Mysql的驱动DLL库,然后将其引入开发环境即可,博主参考了下载网上比较多的教程,但是Qt6哪怕博主已经测试了有QMysql但是仍然无法加载到Mysql,最后博主选择将Qt版本改为Qt5.14.2,大家使用qt时最好选择与博主相同的版本,避免出现不必要的错误。

项目配置

一般在默认情况下,Qt为了使最终编译生成的项目目录体积尽可能小拉来节省空间,会将生成的debug文件夹以及其中的内容置于项目目录外,这样为我们管理项目带来了问题,所以我们要将其移入项目目录中,方法是我们在Geeneral栏下取消勾选Shadow build
在这里插入图片描述
然后我们对项目的.pro配置文件进行修改,添加配置项:
配置内容:

QT       += sql

该配置内容是为了使sql语句能够访问后台数据库。
在这里插入图片描述

sql_12">编译Mysql驱动

操作步骤

  • 首先我们打开Mysql安装目录下的lib文件夹,将libmysql.dlllibmysql.lib复制到你所使用Qt的编译器(博主的是MinGW)的bin目录中
    在这里插入图片描述
    在这里插入图片描述

  • 然后到Qt安装目录下src目录下的mysql文件夹,打开mysql.pro这一Qt项目工程配置文件,选择你所使用的编译器(博主的是MinGW),对mysql.pro文件进行修改:
    在这里插入图片描述
    然后点击运行,会显示报错但是不需要管()
    在这里插入图片描述

  • 然后将lib文件夹中生成的三个文件复制到Qt所使用编译器编译器的数据库引擎中:
    在这里插入图片描述

在这里插入图片描述

  • 最后我们尝试打印数据库驱动:
#include "mainwindow.h"#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>int main(int argc, char *argv[])
{qDebug()<<QSqlDatabase::drivers();
}

出现QMYSQL就代表我们的数据库驱动加载成功了
在这里插入图片描述
最后可以尝试连接一下自己的Mysql数据库:

#include "mainwindow.h"#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>int main(int argc, char *argv[])
{QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1");db.setUserName("root");db.setPassword("pwd");db.setDatabaseName("db_test");if(!db.open()){qDebug() << "未成功链接到数据库";}else{qDebug() << "成功链接到数据库";}

结语

至此我们完成了数据库表结构的设计,并且成功加载了QMYSQL这一mysql数据库驱动,一会我会发一篇有关Mysql常用命令总结的博文,大家如果没有怎么接触过Mysqlsql语句可以看看,从下一篇博文开始,我们就要开始登录界面的制作了,大家下篇见!


http://www.ppmy.cn/news/1457999.html

相关文章

图书管理系统调整——修改注解(引入IoC、DI思想)

这里修改的还是比较简单&#xff0c;我们知道&#xff0c;五大注解通常情况下是可以混用的&#xff0c;而这里的BookController和UserController的注解不变 &#xff0c;也不能改变&#xff0c;因为Controller除了交给Spring管理外&#xff0c;还具备一定的路由功能&#xff0c…

【快速幂取模】

求 a 的 b 次方对 p 取模的值&#xff0c;其中 1≤a,b,p≤109 输入 三个用空格隔开的整数a,b和p。 输出 一个整数&#xff0c;表示ab mod p的值。 样例输入 Copy 2 3 9样例输出 Copy 8 思路&#xff1a; 这里借鉴一下大佬的用例&#xff1a; #include<bits/stdc.h&…

【贪心算法】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法Python实现时间复杂性 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图&#xff0c; E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] [ w ] c[v][w] c[v][w]如果 G G G的一个子图 G ′ G^{} G′是…

OpenAI 最佳平替,使用 Promptulate 增强你的AI能力

&#x1f496; Brief&#xff1a;大家好&#xff0c;我是Zeeland。Tags: 大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 个人说明书&#xff1a;Zeeland&…

网络安全之ACL

ACL&#xff1a;访问控制列表——控制列表&#xff08;策略列表&#xff09;&#xff0c;是一个控制工具。 功能&#xff1a;&#xff01;、定义感兴趣路由&#xff08;控制层面&#xff09;。2、定义感兴趣流量&#xff08;数据层面&#xff09;。 例如&#xff1a; 假设在该…

Python 二级考试刷什么题?

Python 二级考试是一种测试 Python 编程技能的标准化考试&#xff0c;旨在评估考生对 Python 语言的掌握程度以及其在编程实践中的应用能力。 该考试通常包含一系列的选择题和编程题&#xff0c;涵盖 Python 的基础知识、数据结构与算法、面向对象编程、文件操作、异常处理、模…

传神论文中心|本周人工智能领域论文推荐

在人工智能领域的快速发展中&#xff0c;我们不断看到令人振奋的技术进步和创新。近期&#xff0c;开放传神&#xff08;OpenCSG&#xff09;社区发现了一些值得关注的成就。在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了许多领域的核心驱动力。o…

微机控制电子式万能试验机WDW-5B

一.项目简介&#xff1a; 国内微机控制电子式万能试验机起步于90年代初&#xff0c;为提高企业产品的技术水平&#xff0c;公司先后引进国外先进技术&#xff0c;使公司的产品技术水平跃上了一个新的台阶。 二.使用领域&#xff1a; 该产品广泛用于金属、非金属材料的拉、压…