编译QT Mysql库并集成使用
安装MSVC编译器与Windows 10 SDK
打开Visual Studio Installer,如果已经安装过内容了可能是如下页面,点击修改(头一回打开的话不需要这一步):
![[图片]](https://img-blog.csdnimg.cn/9ece78da043a4128874cd0eab6fcc80f.png)
然后在工作负荷中勾选使用C++的桌面开发,它会帮我们勾选好一些组件,以及一个Windows 10 SDK:
![[图片]](https://img-blog.csdnimg.cn/593c3cd41e56455b9f35045b572182f0.png)
选择win10 sdk
![[图片]](https://img-blog.csdnimg.cn/2422c1d6138c493f8bee46c354283a76.png)
在单个组件中勾选自己要安装的编译器,此处安装了MSVC2015、MSVC2017、MSVC2019:
![[图片]](https://img-blog.csdnimg.cn/2214c45441744abda360e83e6e1a282a.png)
QCreator编译mysql dll
1.查看当前QT在msvc2017_64下的数据库插件类型
![[图片]](https://img-blog.csdnimg.cn/8b591f2d465741daba6866845a8ba368.png)
检查mingw73_64/plugins/sqldrivers目录下是否存在qsqlmysql.dll文件,没有就需要编译mysql驱动。
2.在项目中,选择需要构建的源目录
![[图片]](https://img-blog.csdnimg.cn/a7eb50e941ac4aef9066db242db35d5d.png)
3.点击编辑,打开mysql.pro文件进行配置
![[图片]](https://img-blog.csdnimg.cn/b35c051356264222aaedbdbe3294c209.png)
附mysql.pro源文件:
TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugininclude(../qsqldriverbase.pri)LIBS += "D:\Library\mysql-5.7.32-winx64\lib\libmysql.lib"
INCLUDEPATH += "D:\Library\mysql-5.7.32-winx64\include"
DESTDIR = ../mysql/qtMyLib
附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.下载mysql对应版本的内容
https://downloads.mysql.com/archives/community/
![[图片]](https://img-blog.csdnimg.cn/634d54bcbc3d402686a3e229a4e651fb.png)
解压如下:
![[图片]](https://img-blog.csdnimg.cn/045883ae835e445b9548ad533ba2b4e0.png)
5.进行编译
![[图片]](https://img-blog.csdnimg.cn/21700a77f7ae4c2192fbf0364a5ffb4c.png)
先点锤子,再点执行,出现如下图片即成功:
![[图片]](https://img-blog.csdnimg.cn/e0d9b06d1e424591bd2b3519c00e0861.png)
(1)出现错误:QMAKE_MSC_VER isn’t set
进入文件夹D:\Library\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common,打开msvc-version.conf文件,添加
QMAKE_MSC_VER = 1900,对应如下:
![[图片]](https://img-blog.csdnimg.cn/de724c00bc1f4d89b1739f2259a30424.png)
(2)出现错误:Library ‘mysql’ is not defined,在qt左侧栏中双击打开mysql.pro
将#QMAKE_USE += mysql这一行注释掉
(3)mysql和编译器的位数要一致,mysql是64位,那么上述三个文件都要复制到64位的编译器中
一定要复制到mysql对应位数的编译器中,然后在构建的时候,注意选择需要生成的应用是32位还是64位。
6.DESTDIR 定义编译后lib的路径,寻找编译后的数据
![[图片]](https://img-blog.csdnimg.cn/44e48d5941a147f8920ba497efa8d665.png)
7.将文件复制到编译器的5.14.2\msvc2017_64\plugins\sqldrivers中
![[图片]](https://img-blog.csdnimg.cn/85cc04be0934479e95aa9c6e9834d30f.png)
8.将mysql的dll复制到项目的执行目录下
![[图片]](https://img-blog.csdnimg.cn/8da78b6aad9549c4bb6c04e7fd238e9d.png)
(4)QSqlDatabase::drivers 返回空
把5.14.2\msvc2017_64\plugins\sqldrivers文件夹全部拷贝到项目的执行目录下。
![[图片]](https://img-blog.csdnimg.cn/95c782e22a6948bbb751281bfb588b55.png)
QSqlDatabase集成mysql
1.cmakelist添加SQL依赖
find_package(Qt5 COMPONENTSCoreGuiWidgetsSqlREQUIRED)add_executable(QtDemo2 main.cppsql_process.hsql_process.cpp)target_link_libraries(QtDemo2Qt5::CoreQt5::GuiQt5::WidgetsQt5::Sql
)
2.新建表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`id` INT(11) NOT NULL AUTO_INCREMENT,`username` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`password` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`permission` INT(2) NOT NULL,PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = INNODB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (1, 'admin', '123456', 1);
INSERT INTO `users` VALUES (32, 'xfgc', '肖1111', 2);
INSERT INTO `users` VALUES (39, '123', '哲222', 1);SET FOREIGN_KEY_CHECKS = 1;
3.sql常用操作
//
// Created by zhe.xiao on 2023/11/22.
//#include "sql_process.h"
#include <QSqlDatabase>
#include <QStringlist>
#include <QSqlQuery>
#include <QVariant>
#include <QSqlError>
#include <QSqlRecord>void SqlProcess::connect()
{qDebug("SqlProcess started....");QSqlDatabase dbLink = QSqlDatabase::addDatabase("QMYSQL");dbLink.setPort(3306);dbLink.setDatabaseName("ws300");dbLink.setHostName("localhost"); //连接本地主机dbLink.setUserName("root");dbLink.setPassword("Xi1ozh#1");if (!dbLink.open()){qDebug("SqlProcess QSqlDatabase Database Open Failed!!");}QSqlQuery query(dbLink);QString sql = QString("select * from users;");if (query.exec(sql)){qDebug("SqlProcess QSqlQuery Succceed!!");int fieldNo = query.record().indexOf("password");while (query.next()){std::string a1 = query.value(fieldNo).toString().toStdString();std::string b1 = query.value(1).toString().toStdString();std::string c1 = query.value(2).toString().toStdString();std::string d1 = query.value(3).toString().toStdString();qDebug("SqlProcess QSqlQuery Data %s %s %s %s", a1.c_str(), b1.c_str(), c1.c_str(), d1.c_str());}}dbLink.close();qDebug("SqlProcess finished....");
}
相关文章:
编译QT Mysql库并集成使用
安装MSVC编译器与Windows 10 SDK 打开Visual Studio Installer,如果已经安装过内容了可能是如下页面,点击修改(头一回打开的话不需要这一步): 然后在工作负荷中勾选使用C的桌面开发,它会帮我们勾选好一些…...
利用企业被执行人信息查询API保障商业交易安全
前言 在当今竞争激烈的商业环境中,企业为了保障商业交易的安全性不断寻求新的手段。随着技术的发展,利用企业被执行人信息查询API已经成为了一种强有力的工具,能够帮助企业在商业交易中降低风险,提高合作的信任度。 企业被执行人…...
【深度学习】P1 深度学习基础框架 - 张量 Tensor
深度学习基础框架 张量 Tensor 张量数据操作导入创建张量获取张量信息改变张量张量运算 张量与内存 张量 Pytorch 是一个深度学习框架,用于开发和训练神经网络模型。 而其核心数据结构,则是张量 Tensor,类似于 Numpy 数组,但是可…...
vue2 识别页面参数中的html
在Vue 2中,你可以使用v-html指令来识别页面参数中的HTML内容。v-html指令允许你将HTML代码作为Vue模板的一部分进行渲染。 以下是一个示例,演示了如何在Vue 2中使用v-html指令来识别页面参数中的HTML内容: <template><div v-html&…...
matlab 一些画图法总结(持续更新)
*****************************************画Dmd_L极坐标表示法**************************************** if(~exist(Dmd_L_array)) Dmd_L_array []; end Dmd_L_array [Dmd_L_array; Dmd_L]; thetaangle(Dmd_L_array); rabs(Dmd_L_array); polarplot(theta,r,o); *****…...
MDK AC5和AC6是什么?在KEIL5中添加和选择ARMCC版本
前言 看视频有UP主提到“AC5”“AC6”这样的词,一开始有些不理解,原来他说的是ARMCC版本。 keil自带的是ARMCC5,由于ARMCC5已经停止维护了,很多开发者会选择ARMCC6。 在维护公司“成年往事”项目可能就会遇到新KEIL旧版本编译器…...
杰发科技AC7801——EEP内存分布情况
简介 按照文档进行配置 核心代码如下 /*!* file sweeprom_demo.c** brief This file provides sweeprom demo test function.**//* Includes */ #include <stdlib.h> #include "ac780x_sweeprom.h" #include "ac780x_debugout.h"/* Define …...
【mybatis注解实现条件查询】
文章目录 步骤1: 引入MyBatis依赖步骤2: 创建数据模型步骤3: 创建Mapper接口步骤4: 配置MyBatis步骤5: 执行条件查询 步骤1: 引入MyBatis依赖 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.x.…...
【广州华锐互动】VR线上课件制作软件满足数字化教学需求
随着科技的不断发展,虚拟现实(VR)技术在教学领域的应用逐渐成为趋势。其中,广州华锐互动开发的VR线上课件制作软件更是备受关注。这种工具为教师提供了便捷的制作VR课件的手段,使得VR教学成为可能,极大地丰…...
MySQL 中 DELETE 语句中可以使用别名么?
某天,正按照业务的要求删除不需要的数据,在执行 DELETE 语句时,竟然出现了报错! 作者:林靖华,开源数据库技术爱好者,擅长MySQL和Redis的运维 爱可生开源社区出品,原创内容未经授权不…...
flutter创建不同样式的按钮,背景色,边框,圆角,圆形,大小都可以设置
在ui设计中,可能按钮会有不同的样式需要你来写出来,所以按钮的不同样式,应该是最基础的功能,在这里我们赶紧学起来吧,web端可能展示有问题,需要优化,但是基本样式还是出来了 我是将所有的按钮放…...
【C++】标准模板库STL作业(其二)
🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:…...
基于SpringBoot+Redis实现点赞/排行榜功能,可同理实现收藏/关注功能,可拓展实现共同好友/共同关注/关注推送功能
前言 简单记录一下在SpringBoot项目中,使用Redis实现点赞/排行榜功能,可同理实现收藏/关注功能,可拓展实现共同好友/共同关注/关注推送功。主要用到了Redis中的Set集合和ZSet集合。 一、指定使用某个索引的数据库 在Redis中,可…...
AI“胡说八道”?怎么解?
原创 | 文 BFT机器人 01 引言 近年来,人工智能产业迅猛发展,大型语言模型GPT-4发展势头强劲,OpenAI推出ChatGPT、微软推出Bing、马斯克推出“最好的聊天机器人Grok”……科技巨头纷纷入局AI领域,引入人工智能作为办公工具的行业…...
[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering
pdf | proj | code 本文提出一种新的3D数据表达形式3D Gaussians。每个Gaussian由以下参数组成:中心点位置、协方差矩阵、可见性、颜色。通过世界坐标系到相机坐标系,再到图像坐标系的仿射关系,可将3D Gaussian映射到相机坐标系,通…...
大话设计模式C++实现
大话设计模式,讲得非常好,但是作者是用C#写的,为了方便C程序员,使用C写了大话设计模式的代码 详情见Github:https://github.com/liubamboo/BigTalkDesignPattern...
IT 领域中的主要自动化趋势
48%的IT自动化流程属于IT服务管理,过去一年中,IT运维自动化增长了272%。 IT部门从交付者转变为战略伙伴 今年的《工作自动化指数》数据显示,自动化正在蔓延到组织的各个部门,越来越多的部门采用自动化,并且IT以外的员工…...
使用Python解析CAN总线
缘起 在新能源车辆的开发和维护中,经常需要对CAN总线数据进行分析。CANOE等总线软件虽然方便,但功能有限,难以满足数据分析的要求。Matlab的Vehicle Network Toolbox可以方便的进行数据解析和分析,它是闭源且收费的。因此&#x…...
DevExpress中文教程 - 如何在macOS和Linux (CTP)上创建、修改报表(下)
DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reports — 跨平台报表组件&#x…...
RAID的应用场景以及优缺点
RAID 0(条带化): 工作原理: 数据被分成块,每个块写入不同的驱动器,以并行方式提高读写性能。 优势: 卓越的性能提升,特别是对于大型文件的读写操作。 劣势: 完全没有冗余,一个驱动器…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
