QT5.14.2与Mysql8.0.16配置笔记
1、前言
我的QT版本为 qt-opensource-windows-x86-5.14.2。这是QT官方能提供的自带安装包的最近版本,更新的版本需要自己编译源代码,可点击此链接进行下载:Index of /archive/qt/5.14/5.14.2,选择下载 qt-opensource-windows-x86-5.14.2.exe 。另外,在安装QT的时候一定要安装源代码!一定要安装源代码!一定要安装源代码!不然到时候还要重新安装,只需要在安装的时候勾选上安装 Source 即可,如下所示:
我的MySQL版本为 mysql8.0.16,可通过mysql -V命令进行查看,如下所示:
该版本的MySQL是64位的!记住,这个很重要!一定要保证QT工程的位数和Mysql的位数一致!
2、准备工作
要在QT中操作MySQL数据库,需要在QT的工程文件.pro中添加如下命令:
加完之后别忘了保存,并重新编译一下工程。
在QT中可以打印一下当前QT版本支持的数据库:
#include <QSqlDatabase>qDebug() << QSqlDatabase::drivers();
打印出的结果如下:
通过查看QT的安装目录,也可以发现在QT的安装目录中并没有MySQL的动态链接库,我的查看目录如下所示:
版本不同目录可能不一样,但基本上都是在mingwXX_XX\plugins\drivers目录下。需要注意的是,mingwXX_XX一定要和你的QT工程采用的编译器保持一致!
可见,当前QT版本并不支持MySQL。
所以我们需要通过重新编译的方式生成MySQL的动态链接库。
3、重新编译MySQL动态链接库
首先找到QT的源代码安装目录(这就是为什么一定要安装QT的Source,我当时找不到这个郁闷了半天),找到mysql.pro工程,我的具体目录如下所示:
然后在QT中打开mysql.pro,配置工程,选择编译器,和你的QT工程的编译器保持一致:
然后按照如下方式修改mysql.pro文件:
首先注释掉 QMAKE_USE += mysql ,然后分别添加INCLUDEPATH(在mysql安装目录下,换成自己的)和LIBS(在mysql安装目录下,换成自己的),和DESTDIR(这个是动态库的生成目录,直接按上面的写法写就行)。.pro文件修改完成之后保存,然后直接编译(点击QT左下角的锤子标志),直接编译即可,其他的不用管。此时,就可以下当前工程目录下找到新生成的mysql动态库文件,如下所示:
至此,mysql的动态链接库生成完毕。
4、配置QT
前面已经生成好mysql的动态链接库,接下来需要将生成的库拷贝到正确的目录下就可以了。
首先,将生成的三个库文件全部拷贝到QT的数据库引擎目录下(注意编译器的选择,和你的QT工程保持一致),如下所示:
然后将,MySQL安装目录下的mysql库文件,如下所示:
拷贝到QT的目录下,目录如下所示(注意编译器文件的选择):
此时,关于QT中MySQL的配置已经全部完成。通过上面的语句可以看到,当前的QT已经支持MYSQL了:
5、MySQL的简单操作
5.1、连接数据库
//链接数据库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() << "成功链接到数据库";}
5.2、插入数据
QSqlQuery query(db);bool re = query.exec("INSERT INTO table_name (col1, col2, col3) VALUES (1, 1, 2)");//bool re = query.exec("insert into table_name values(3, 1, 2)");if(!re){qDebug() << "操作数据库失败!" ;}else{qDebug() << "操作数据库成功!" ;}
5.3、更新数据表
bool re = query.exec("update table_name set col2=2, period=1 where col1=1");if(!re){qDebug() << "操作数据库失败!" ;}else{qDebug() << "操作数据库成功!" ;}
5.4、读取数据表
QSqlQuery db_cursor(db);QString cmd = QString("select * from table_name");db_cursor->exec(cmd);if(db_cursor->size() == -1){qDebug() << QString("数据表 <table_name> 操作异常,请检查... ");return;}else if(db_cursor->size() == 0){qDebug() << QString("数据表 <table_name> 没有数据,请检查... ");return;}else{while(db_cursor->next()){int col0= db_cursor->value(0).toInt();QString col1= db_cursor->value(1).toString();}}
附:Mysql8.0.16安装教程
1、去官网下载要安装的mysql版本
Mysql官网下载地址,点击下载
点击Archives,可以选择你想要下载的版本,这里我安装的是8.0.16版本。
下载完成后,解压之后的目录结构:
2、配置初始化的my.ini文件
在解压之后的目录结构中添加一个my.ini文件,在根目录下新建一个文本文档,将下面内容复制进去,保存后重命名为my.ini
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
#basedir=C:\Program Files\MySQL
basedir=D:\mysql\mysql8
# 设置mysql数据库的数据的存放目录
#datadir=C:\Program Files\MySQL\Data
datadir=D:\mysql\mysql8\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
注意:
mysql的安装目录和数据存放目录要改成你自己的目录。
数据存放目录的data文件夹,不要自己手动创建。
3、初始化MySQL
在安装的时候,为了避免出错,我们以管理员的身份去运行CMD(重要),避免出现安装失败的情况。
bin目录下执行下面的命令:
mysqld --initialize --console
注意: [MY-010454] [服务器]为root @ localhost生成临时密码:pIsuy2ZsFw)o。在没有更改密码前,需要记住这个密码,后续登录需要用到。复制密码先保存起来!!!
4、安装MySQL服务,并启动MySQL服务
(1)安装mysql服务
执行下面的命令:
mysqld --install [服务名] (服务名可以不加默认是mysql)
如果显示 service successfully installed 证明安装成功了。
服务安装成功之后执行下面命令启动mysql服务:
net start mysql
5、配置MySQL环境变量
【此电脑】右击属性——>【高级系统设置】——>进入系统属性窗口点击【环境变量】
D:\mysql\mysql8\bin
到此,环境变量配置完毕!
6、检查MySQL服务是否启动
有时候MySQL的服务不会自动启动,那么需要我们在连接数据库之前去手动启动MySQL的服务。
右键计算机——>管理——>服务和应用程序——>服务,在右侧栏目中找到名称为MySQL的服务。如果没有启动的话,这个时候它的状态应该是空,即未启动,启动此服务就OK了。
7、连接MySQL,并修改密码
使用Navicat去连接本地mysql。第一次连接密码时要使用默认密码(就是初始化mysql的时候我们复制的密码)。点击连接测试会显示连接成功。紧接着会弹出让你修改密码的弹框,重置密码即可。
走到这一步,恭喜你已经成功安装✨
8.命令行操作数据库常用命令
#启动mysql服务器
net start mysql#初始管理员登录
mysql -u root -p#先创建一个数据库
create database mydatabase;#再创建一张表
create table student(id integer unsigned primary key,name varchar(16) not null,birth date
)charset utf8;#查询表格
select * from student;#插入数据
insert into student values (1, "tom", "1999-9-9");#创建一个用户,%指定所有电脑都可以登录
create user "test"@"%" identified by "test";#授权操作
grant select, insert, create on *.* to "test"@"%";#退出
exit#用tset用户登录
mysql -u tset -p#先创建一个数据库
create database mydatabase1;#使用数据库
use mydatabase1;#再创建一张表
create table student1(id integer unsigned primary key,name varchar(16) not null,birth date
)charset utf8;#插入数据
insert into student1 values (1, "tom", "1999-9-9");
insert into student1 values (2, "jack", "2000-1-1");
insert into student1 values (3, "aa", "2022-2-2");#查询表格
select * from student1;#退出
exit#指定任何一台电脑都可以登录
vim /etc/mysql/mysql.conf.d/mysqld
#将 bind-address =127.0.0.1改为
bind-address =0.0.0.0#重启mysql
service mysql restart
附:Navicat安装教程
一、下载
链接:https://pan.baidu.com/s/14t2MTbyB3A72H7NcNBLcjQ
提取码:e6o0
二、安装
1、解压和安装这两个文件
2、将简体中文64位的文件复制到Navicat12文件夹内
3、Navicat的简单操作
过期日期为1899、12、30即破解成功
(1)点击试用
(2)点击左上角链接MySQL,然后按设置链接名:并输入密码(就是初始化mysql的时候我们复制的密码)。确定
(3)右键root打开连接
如果密码输入错误,则会报1045错误
参考:
1.MySQL 8.0.16 安装教程(超详细)
2.[新人向]MySQL和Navicat下载、安装及使用详细教程
3.如何在cmd命令行下切换目录
4.以管理员身份运行CMD命令
5.安装MySQL8.0.16及环境变量配置教程
6.解决Install/Remove of the Service Denied报错
相关文章:

QT5.14.2与Mysql8.0.16配置笔记
1、前言 我的QT版本为 qt-opensource-windows-x86-5.14.2。这是QT官方能提供的自带安装包的最近版本,更新的版本需要自己编译源代码,可点击此链接进行下载:Index of /archive/qt/5.14/5.14.2,选择下载 qt-opensource-windows-x86…...

判断是否为完全二叉树
目录 分析 分析 1.完全二叉树的概念:对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。 2.思路:可以采…...

【笔记】记一次redis将从节点变成主节点 主节点变成从节点
1.连上虚拟机centos7 2.打开finalshell连接虚拟机 将从节点变为主节点 输出redis-cli -p 要变成主节点的从节点 -a此从节点的密码 输入 replicaof no one 查看端口状态 info replication 总结: redis-cli -p 端口号 -a 密码 replicaof no one info replicati…...

解析Java中1000个常用类:DoubleSummaryStatistics类,你学会了吗?
在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站 推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程…...

WAIC热点聚焦|新质生产力与低空经济
WAIC热点聚焦|新质生产力与低空经济 概览 # WAIC热点聚焦 | 新质生产力与低空经济## 1. 新质生产力定义与特点 - 新质生产力是在新的经济社会发展阶段中形成的,具有变革性和高增长潜力的生产能力。## 2. 低空经济概念与构成 ### 2.1 低空经济定义 - 低空经济是依托…...

Docker部署ETCD 3.5.14(保姆级图文教程)
系列文章目录 Docker部署Nginx 1.21.5(保姆级图文教程) Docker部署MySQL 8.3.0(保姆级图文教程) Docker部署ETCD 3.5.14(保姆级图文教程) 文章目录 一、环境二、拉取镜像2.1 查找 Docker Hub 上的 ETCD 镜像…...

2024年7月6日 (周六) 叶子游戏新闻
自动电脑内部录音器AutoAudioRecorder: 是一款免费的自动音频录制软件,可直接将电脑内部所有的声音录制成 mp3/wav 文件,包括音乐、游戏直播、网络会议、聊天通话等音频源。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《不羁联盟》制作人&…...

python爬虫入门(二)之Requests库
一、储备篇 1、requests库让我们可以通过python代码去构建和发送HTTP请求 2、第三方库,要先安装 python终端,输入pip install requests successfully installed:安装成功 requirement already satisfied: 说明已经安装过,无需…...

Git 操作补充:cherry-pick、变基
1. 挑选提交合并 git cherry-pick 对于多分支的代码库,将代码从一个分支转移到另一个分支是一种常见的需求,这可以分成两种情况:一种情况是,你需要另一个分支的所有代码变动,那么就采用 git merge;另一种情…...

在 PostgreSQL 中,如何处理大规模的文本数据以提高查询性能?
文章目录 一、引言二、理解 PostgreSQL 中的文本数据类型三、数据建模策略四、索引选择与优化五、查询优化技巧六、示例场景与性能对比七、分区表八、数据压缩九、定期维护十、总结 在 PostgreSQL 中处理大规模文本数据以提高查询性能 一、引言 在当今的数据驱动的世界中&…...

秋招提前批面试经验分享(下)
⭐️感谢点开文章👋,欢迎来到我的微信公众号!我是恒心😊 一位热爱技术分享的博主。如果觉得本文能帮到您,劳烦点个赞、在看支持一下哈👍! ⭐️我叫恒心,一名喜欢书写博客的研究生在读…...

零基础STM32单片机编程入门(七)定时器PWM波输出实战含源码视频
文章目录 一.概要二.PWM产生框架图三.CubeMX配置一个TIME输出1KHZ,占空比50%PWM波例程1.硬件准备2.创建工程3.测量波形结果 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写&…...

【ubuntu自启shell脚本】——在ubuntu中如何使用系统自带的启动应用程序设置开机自启自己的本地shell脚本
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、设置开机自启shell脚本1.使用 gnome-session-properties2.测试的shell例程代码 总结 前言 在Ubuntu系统中设置开机自启脚本是一种重要的自动化方法。开机自…...

nodejs配置国内镜像
# 设置淘宝镜像 npm config set registry https://registry.npmmirror.com# 查看镜像源 npm get registry...

【JavaEE】多线程进阶
🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 文章目录 1.锁策略1.1悲观锁和乐观锁1.2重量级锁和轻量级锁1.3自旋锁和挂起等待锁1.4可…...

大模型LLM面试常见算法题-包括Attention和Transformer常见面试题
大模型: 位置编码有哪些? 介绍LoRA与QLoRA RAG和微调的区别是什么? 哪些因素会导致LLM的偏见? 什么是思维链(CoT)提示? Tokenizer的实现方法及原理 解释一下大模型的涌现能力?…...

90元搭建渗透/攻防利器盒子!【硬件篇】
前言 以下内容请自行思考后进行实践。 使用场景 在某些情况下开软件进行IP代理很麻烦,并不能实现真正全局,而且还老容易忘记,那么为了在实景工作中,防止蓝队猴子封IP,此文正现。 正文 先说一下实验效果࿱…...

用vue2+elementUI封装手机端选择器picker组件,支持单选、多选、远程搜索多选
单选注意点: touchmove.prevent: 在 touchmove 事件上添加 .prevent 修饰符,以阻止默认的滚动行为。 handleTouchStart: 记录触摸开始的 Y 坐标和当前的 translateY 值。 handleTouchMove: 计算触摸移动的距离,并更新 translateY 值。 han…...

『古籍自有答案』古风H5案例赏析
「古籍自有答案」,一部由新京报与字节跳动公益联合打造的古风H5,以诗意盎然的开篇引领用户穿梭于千年文脉。 part1. 创意定位 "人生有惑问先贤,先贤答案存古籍",在这里,每一个灵魂的探问,都能在…...

Laravel模型事件完全指南:触发应用程序的动态行为
标题:Laravel模型事件完全指南:触发应用程序的动态行为 在Laravel框架中,模型事件提供了一种优雅的方式来处理Eloquent模型生命周期中的各种关键时刻。通过监听和响应这些事件,开发者可以自动化许多常见的任务,如日志…...

hot100 |八、二叉树
1-leetcode94. 二叉树的中序遍历 注意:√ 递归方法已经很熟练了,两种不同的递归方式迭代法需要注意,zrm就遇到了要求迭代实现,前序遍历和后续遍历其实不难,中序遍历用的少,注意看一看 // 1.递归方法1Lis…...

Matlab协方差矩阵分解法生成随机场
Matlab协方差矩阵分解法生成随机场 相关系数矩阵 % function outcohesion(x,y,mu,theta) % end % xyload(F:\Research-OUC\基于机器许学习模型的海底斜坡可靠度研究\基于comsol的斜坡稳定性分析\comsol网格操作\grid_operate-matlab.mphtxt); % xxy(:,1); % yxy(:,2); Xlinspac…...

android 在清单文件中配置receiver,系统是何时会注册此广播接收者的?
在 Android 中,通过清单文件(AndroidManifest.xml)配置的广播接收器(BroadcastReceiver),系统会在特定的时机自动注册这些广播接收器。以下是详细的说明: 静态注册的广播接收器 静态注册的广播…...

嵌入式硬件电路常用设计软件
目录 1. Cadence Allegro 2. PADS 3. Altium Designer 4. Multisim 5. Protues 1. Cadence Allegro 功能: Cadence Allegro是Cadence公司推出的先进PCB(Printed Circuit Board,印刷电路板)设计布线工具,也是目前…...

c#的List<T>的SelectMany 和Select
在C#中,List<T>(以及任何实现了IEnumerable<T>的集合)的Select和SelectMany扩展方法都是LINQ(Language Integrated Query)的一部分,用于对集合中的元素进行查询和转换。 尽管它们的作用有些相…...

69.WEB渗透测试-信息收集- WAF、框架组件识别(9)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:68.WEB渗透测试-信息收集- WAF、框架组件识别(8) 有无waf存在&am…...

ASCII码对照表(Matplotlib颜色对照表)
文章目录 1、简介1.1 颜色代码 2、Matplotlib库简介2.1 简介2.2 安装2.3 后端2.4 入门例子 3、Matplotlib库颜色3.1 概述3.2 颜色图的分类3.3 颜色格式表示3.4 内置颜色映射3.5 xkcd 颜色映射3.6 颜色命名表 4、Colorcet库5、颜色对照表结语 1、简介 1.1 颜色代码 颜色代码是…...

Mysql-常用函数及其用法总结
1、字符串函数 测试用例如下: 1.1 CONCAT() 将多个字符串连接成一个字符串。 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 期望结果:John Doe, Jane Smith, Michael Johnson 1.2 SUBSTRING() 提取子字符串 SELECT SUBSTR…...

【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
452. 用最少数量的箭引爆气球 - 力扣(LeetCode) 思路:先按照左边界排序,当前的左边界大于前一个的右边界的时候,表示没有覆盖所以需要一根箭,反之则要更新为最小的右边界 重点:是区间覆盖问题…...

【数据结构】链表带环问题分析及顺序表链表对比分析
【C语言】链表带环问题分析及顺序表链表对比分析 🔥个人主页:大白的编程日记 🔥专栏:C语言学习之路 文章目录 【C语言】链表带环问题分析及顺序表链表对比分析前言一.顺序表和链表对比1.1顺序表和链表的区别1.2缓存利用率&#…...