QT上位机开发(MySql访问)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        网上介绍的关于QT和mysql部分的内容,都是利用Qt自带的mysql库来实现数据读写的。但是事实上来说,即使不用qt带的库,不用odbc,直接使用mysql安装包自带的lib库和dll库,也是可以实现数据访问的,而且也并不复杂。今天,我们正好借着这个机会学习一下,在qt上面怎么使用mysql自带的库进行数据访问。

1、安装mysql软件

        这部分可以安装稍微旧一点、但是比较稳定的软件。

2、创建qt widget工程

        创建一个qt widget工程,为后续的软件修改做准备。需要注意的是,因为使用的mysql lib库和dll库,他们都是64位的,所以创建qt widget的时候,也必须是64位的。

3、用mysql命令创建一个demo databases

        一般创建的databases命令就是create databases demo。创建好demo数据库之后,直接show一下就可以了。

4、设置include目录

        因为涉及到mysql头文件目录的位置,所以include一下,

C:\Program Files\MySQL\MySQL Server 5.7\include

5、设置lib文件

        很多时候并不需要设置lib目录,lib文件少的话,直接设置带目录的lib文件即可,

C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.lib

6、将lib目录下面的dll文件copy到exe同级目录

        这部分工作可以提前做,不然到时候debug的时候,是启动不了的。

7、编写源代码、编译调试

        源代码的部分,其实就比较简单了。首先就是mysql_init初始化,接着用mysql_real_connect链接数据库。后续的动作基本就是sop了,比如创建表、插入数据、更新数据、删除数据、查找数据、打印数据等等,这部分找到对应的api,一个一个去调试即可。当然,结束的时候,最好把mysql的资源也要一个一个去释放掉。

#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>

// Function to handle errors
void handle_error(MYSQL *conn, const char *message) {
	fprintf(stderr, "%s: %s\n", message, mysql_error(conn));
	mysql_close(conn);
	exit(1);
}

int main() {
	MYSQL *conn;

	// Initialize MySQL library
	conn = mysql_init(NULL);
	if (conn == NULL) {
		fprintf(stderr, "mysql_init() failed\n");
		exit(1);
	}

	// Connect to MySQL server
	if (mysql_real_connect(conn, "localhost", "root", "12345678", "demo", 0, NULL, 0) == NULL) {
		handle_error(conn, "mysql_real_connect() failed");
	}

	// Create a table (if it doesn't exist)
	if (mysql_query(conn, "CREATE TABLE IF NOT EXISTS your_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255))")) {
		handle_error(conn, "mysql_query() failed for CREATE TABLE");
	}

	// Example: Insert data
	if (mysql_query(conn, "INSERT INTO your_table (name) VALUES ('John'), ('Jane')")) {
		handle_error(conn, "mysql_query() failed for INSERT");
	}

	// Example: Update data
	if (mysql_query(conn, "UPDATE your_table SET name = 'Johnny' WHERE id = 1")) {
		handle_error(conn, "mysql_query() failed for UPDATE");
	}

	// Example: Delete data
	if (mysql_query(conn, "DELETE FROM your_table WHERE id = 2")) {
		handle_error(conn, "mysql_query() failed for DELETE");
	}

	// Example: Query data
	if (mysql_query(conn, "SELECT * FROM your_table")) {
		handle_error(conn, "mysql_query() failed for SELECT");
	}

	// Retrieve and print results
	MYSQL_RES *result = mysql_store_result(conn);
	if (result == NULL) {
		handle_error(conn, "mysql_store_result() failed");
	}

	MYSQL_ROW row;
	while ((row = mysql_fetch_row(result))) {
		printf("ID: %s, Name: %s\n", row[0], row[1]);
	}

	// Free result set
	mysql_free_result(result);

	// Close connection
	mysql_close(conn);

	// Cleanup MySQL library
	mysql_library_end();

	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/330445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

12.30平衡二叉树、生成树最短路、链表、排序、二叉树——数算选择题专练

1 平衡二叉树 节点数目一定时&#xff0c;平衡因子为1时&#xff0c;树最高。 平衡二叉树&#xff0c;左右子树都是平衡的&#xff0c;最少要满足一个式子&#xff0c;即维护左右都是AVL,最多就是满二叉树&#xff0c;节点总数为2^(h-1)&#xff1b;最少的时候&#xff0c;每…

2.mac 安装 Visual studio code 整合go开发

目录 概述前置下载关键命令整合C#go配置go插件常见的go工具安装测试 结束 概述 mac 安装 Visual studio code 整合go开发 相关前置文章 go安装及相关配置 文章 前置 官网速递 mac 系统高于等于 10.15.x 可以直接最新版本 我的系统是 10.13 &#xff0c;所以只能安装此版本…

Linux系统三剑客之awk命令详解(三)

Linux系统三剑客之grep和正则表达式的介绍(一)-CSDN博客 Linux系统三剑客之sed命令详解(二)-CSDN博客 接上文 目录 1.作用 2.语法 3.变量 4.选项 5.模式 ​编辑 6.动作 7.实例 1.作用 awk是一个强大的文本分析工具&#xff0c;其主要工作原理就是将文件内容逐行读取…

手拉手Vue组件由浅入深

组件 (Component) 是 Vue.js 最强大的功能之一&#xff0c;它是html、css、js等的一个聚合体&#xff0c;封装性和隔离性非常强。 组件化开发&#xff1a; 1、将一个具备完整功能的项目的一部分分割多处使用 2、加快项目的进度 3、可以进行项目的复用 组件注册分…

IaC基础设施即代码:Terraform 连接 aws S3 实现多资源管理

目录 一、实验 1.环境 2.aws 亚马逊云创建用户 3.Windows使用Terraform 初始化 aws provider 4.Windows使用Terraform 创建S3存储资源 &#xff08;对象存储&#xff09; 5.Windows使用Terraform 创建Dynamo DB资源 &#xff08;表格存储&#xff09; 6.Windows给Terrafo…

Skywalking链路追踪

目录 一、简介1.1、APM系统1.2、SkyWalking 简介 二、快速入门2.1、下载、启动2.2、界面认识 三、持久化存储四、告警通知五、自定义追踪-细粒度追踪service方法 一、简介 1.1、APM系统 APM&#xff08;Application Performance Monitoring&#xff09;系统是一种用于监控和管…

《Redis:NoSQL演进之路与Redis深度实践解析》

文章目录 关于NoSQL为什么引入NoSQL1、单机MySQL单机年代的数据库瓶颈 2、Memcached&#xff08;缓存&#xff09; MySQL 垂直拆分 &#xff08;读写分离&#xff09;3、分库分表水平拆分MySQL集群4、如今的网络架构5、总结 NoSQL的定义NoSQL的分类 Redis入门Redis能干嘛&…

AI教我学编程之C#类的基本概念(1)

前言 在AI教我学编程之C#类型 中&#xff0c;我们学习了C#类型的的基础知识&#xff0c;而类正是类型的一种. 目录 区分类和类型 什么是类&#xff1f; 对话AI 追问 实操 追踪属性的使用 AI登场 逐步推进 提出疑问 药不能停 终于实现 探索事件的使用 异步/交互操作 耗时操…

IO网络4.0

思维导图 tftp上传 #include <myhead.h>#define ERR_LOG(msg) do{\perror(msg);\printf("%d %s %s\n", __LINE__, __func__, __FILE__);\ }while(0)#define PORT 69 #define N 516int do_upload(int sfd, struct sockaddr_in sin);int main(int a…

k8s的对外服务ingress

1、service的作用体现在两个方面 &#xff08;1&#xff09;集群内部&#xff1a;不断跟踪pod的变化&#xff0c;更新deployment中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制 &#xff08;2&#xff09;集群外部&#xff1a;类似于负载均衡器&#xff…

PuTTY的ppk密钥与OpenSSH密钥之间的相互转换

几个概念说明&#xff1a;id_rsa、id_rsa.pub、ppk、pem 目前有两个主流的密钥格式&#xff1a;OpenSSH格式的密钥 和 PuTTY格式的密钥。 id_rsa和id_rsa.pub 都是OpenSSH格式的密钥。 id_rsa是OpenSSH格式的SSH私钥。 id_rsa.pub是OpenSSH格式的SSH公钥。ppk文件 ppk文件是P…

机器视觉系统在汽车车轮毂检测上的应用

将机器视觉用于轮毂检测&#xff0c;可以利用图像分析的方法来测量轮毂特征尺寸、判断轮毂形状&#xff0c;并获取其位置坐标等信息&#xff0c;从而能够辨识流水生产线上的各种款式和型号的汽车轮毂。 市面上对汽车车轮毂具体检测要求如下 &#xff1a; 1.为了分辨流水线上…

HTTPS:如何确保您的网站数据传输安全?

目录 博客前言 一.HTTPS 1.1 HTTPS简介 1.2 HTTP和HTTPS区别 1.3 TLS/SSL协议工作原理 1.3.1 TLS/SSL协议结构 1.3.2 SSL/TLS握手协议建立连接过程 1.2.3 SSL/TLS报文分析 博客前言 以下是一个关于HTTPS协议的博客前言示例&#xff1a; 欢迎来到我的博客&#xff0c;今…

2024年腾讯云轻量服务器和CVM云服务器性能如何?

腾讯云轻量服务器和云服务器有什么区别&#xff1f;为什么轻量应用服务器价格便宜&#xff1f;是因为轻量服务器CPU内存性能比云服务器CVM性能差吗&#xff1f;轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境&#xff0c;云服务器CV…

【面试】测试/测开(ING3)

190. 栈和堆在内存管理上的区别 栈 1&#xff09; 栈是由系统自动分配和回收的内存。 2&#xff09;栈的存储地址是由高地址向低地址扩展的。 3&#xff09;栈是一个先进后出的结构。 4&#xff09;栈的空间大小是一个在编译时确定常数&#xff0c;即栈的大小是有限制的&#x…

2024年回炉计划之排序算法(一)

算法是计算机科学和信息技术中的重要领域&#xff0c;涉及到问题求解和数据处理的方法。要学习算法&#xff0c;你可能需要掌握以下一些基本知识&#xff1a; 基本数据结构&#xff1a; 了解和熟练使用各种数据结构&#xff0c;如数组、链表、栈、队列、树和图等。数据结构是算…

新能源汽车智慧充电桩方案:基于视频监控的可视化智能监管平台

一、方案概述 TSINGSEE青犀&触角云新能源汽车智慧充电桩方案围绕互联网、物联网、车联网、人工智能、视频技术、大数据、4G/5G等技术&#xff0c;结合云计算、移动支付等&#xff0c;实现充电停车一体化、充电桩与站点管理等功能&#xff0c;达到充电设备与站点的有效监控…

【汇编】实验12 编写0号中断的处理程序

记录一下代码 assume cs:code code segment start:mov ax,csmov ds,axmov si,offset do0mov ax,0mov es,axmov di,200hmov cx,offset do0end-offset do0cldrep movsb ;将ds:si的字节单元byte送入es:di&#xff0c;也就是将从do0处往下的指令复制到0:200h中。mov word ptr es:[…

阿赵UE学习笔记——11、地形系统

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的用法&#xff0c;这次来学习一下虚幻引擎的地形系统的用法。 一、创建地形 在选项模式里面&#xff0c;选择地形&#xff1a; 进入到地形界面之后&#xff0c;需要先创建一个地形&#xff1a; 留意看…

Springboot+vue的智能家居系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的智能家居系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的智能家居系统&#xff0c;采用M&#xff08;model&a…