C/C++连接MySQL

本章Gitee仓库地址:mysql连接基本操作

文章目录

    • 1. mysql connect库
    • 2. mysql相关接口
      • 2.1 mysql_init()
      • 2.2 mysql_real_connect()
      • 2.3 mysql_query()
      • 2.4 mysql_store_result()
        • 2.41 mysql_num_rows
        • 2.42 mysql_num_fields
        • 2.43 mysql_fetch_row
        • 2.44 mysql_fetch_fields
      • 2.5 mysql_free_result()

1. mysql connect库

使用C/C++连接MySQL,要先下载mysql的库

yum install -y mysql-community-server

在安装mysql的时候,就已经安装了

所需头文件:

ls /usr/include/mysql/

image-20240520192541293

动静态库:

ls /lib64/mysql/*

image-20240520192731764

如果没有,可以尝试安装

yum install mysql-devel

2. mysql相关接口

C语言API函数参考

2.1 mysql_init()

初始化mysql结构体对象

参数:

MYSQL *mysql_init(MYSQL *mysql)

2.2 mysql_real_connect()

连接mysql服务器

参数:

MYSQL *
mysql_real_connect(MYSQL *mysql,const char *host,	//连接的主机地址const char *user,	//用户名const char *passwd,	//密码const char *db,	//所选择的数据库unsigned int port,	//端口号const char *unix_socket,	//套接字unsigned long client_flag)

2.3 mysql_query()

参数:

int mysql_query(MYSQL *mysql,	//初始化的对象const char *stmt_str)	//sql语句(无需带';'或'/G')

image-20240520203926148

一般不会写这种客户端出来,这是直接将要执行的sql输入到程序

image-20240520204424983

这里增删改都没问题,只需保证成功即可,这里一定会成功,因为是事务。

select需要将一个个的数据显示出来,让用户获取,所以select还是需要获取上层的。

此外,如果需要显示中文,需要更改一下编码格式

image-20240520204806093

链接建立好之后,默认的latin1,要改成utf8

mysql_set_character_set(my, "utf8");

image-20240520205259766

2.4 mysql_store_result()

参数:

MYSQL_RES *mysql_store_result(MYSQL *mysql)

image-20240520205712093

查询结果以行为单位放在结果集当中

如何理解mysql_res

image-20240520210430979

这些+---+---+|分隔符都是格式化输出显示出来的,并不是在mysql真实存在的

真实存在的是右侧的那些内容,列属性、每列的数据(内容)

查出来的数据,是在内存当中,mysql将所有的数据,读取出来的时候都当作字符串

image-20240521000820959

可以理解为char **pptr[]或者char * ptr[][]

2.41 mysql_num_rows

语法:

my_ulonglong mysql_num_rows(MYSQL_RES *result)

提取有多少行

2.42 mysql_num_fields

语法:

unsigned int mysql_num_fields(MYSQL_RES *result)

提取有多少列

image-20240521001929881

2.43 mysql_fetch_row

语法:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

image-20240521002434546

对结果集进行操作,拿到其中的一行

类似与C++的迭代器

2.44 mysql_fetch_fields

语法:

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

获取表结构的属性

image-20240521003220136

MYSQL_RES *res = mysql_store_result(my);my_ulonglong rows = mysql_num_rows(res);my_ulonglong fields = mysql_num_fields(res);std::cout << "行:" << rows << std::endl;std::cout << "列:" << fields << std::endl;//属性MYSQL_FIELD *field_array = mysql_fetch_field(res);for(int i = 0; i < fields; i++){//格式化输出std::cout << std::left << std::setw(15) << field_array[i].name << "\t";}std::cout << std::endl;//内容(数据)for(int i = 0; i < rows; i++){MYSQL_ROW row = mysql_fetch_row(res);for(int j = 0; j < fields; j++){std::cout << std::left << std::setw(15) << row[j] << "\t";}    std::cout << std::endl;}

image-20240521003905963

2.5 mysql_free_result()

提取的内容存在内存当中,系统给我们malloc好了,用完需要我们自己释放

void mysql_free_result(MYSQL_RES *result)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国上市企业行业异质性数据分析

数据简介&#xff1a;企业行业异质性数据是指不同行业的企业在运营、管理、财务等方面的差异性数据。这些数据可以反映不同行业企业的特点、优势和劣势&#xff0c;以及行业间的异质性对企业经营和投资的影响。通过对企业行业异质性数据的分析&#xff0c;投资者可以更好地了解…

STM32系列-STM32介绍

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” STM32介绍 STM32介绍 ST&#xff1a;指的是意法半导体 M&#xff1a;指定微处理器 32&#xff1a;表示计算机处理器位数 ARM分成三个系列&#xff1a; Cortex-A&#xff1…

Python读取Excel表格文件并绘制多列数据的曲线图

本文介绍基于Python语言&#xff0c;读取Excel表格数据&#xff0c;并基于给定的行数范围内的指定列数据&#xff0c;绘制多条曲线图&#xff0c;并动态调整图片长度的方法。 首先&#xff0c;我们来明确一下本文的需求。现有一个.csv格式的Excel表格文件&#xff0c;其第一列为…

爬山算法详解

爬山算法详解 背景 爬山算法&#xff08;Hill Climbing Algorithm&#xff09;是一种基于启发式搜索的优化算法&#xff0c;用于在搜索空间中寻找局部最优解。该算法的基本思想是从一个初始解出发&#xff0c;通过不断移动到邻域内更优的解来寻找最优解&#xff0c;直至无法找…

Flutter 中的 Flow 小部件:全面指南

Flutter 中的 Flow 小部件&#xff1a;全面指南 Flutter 的 Flow 是一个功能强大的布局小部件&#xff0c;它允许开发者在父组件的任意位置放置子组件。Flow 可以通过使用 FlowDelegate 完全自定义子组件的布局&#xff0c;这为创建复杂的自定义布局提供了极大的灵活性。本文将…

Sqoop的安装与测试

这里写目录标题 什么是Sqoop?Sqoop的安装与配置安装测试 什么是Sqoop? Sqoop就是hadoop和mysql的一个中间介质 , 作用就是可以将hadoop中的数据传到mysql中 , 或将mysql中的数据导入到hadoop中 Sqoop的安装与配置 安装 详细代码 //解压安装 [roothadoop soft]# tar -zxv…

【如何在Qt C++中使用SSL和TLS加密传输数据?】

在Qt C++中使用SSL和TLS加密传输数据,一般步骤如下: 准备工作: 确保您的Qt项目已经链接了网络模块(QT += network)和SSL模块(QT += ssl)。 步骤: 创建QNetworkRequest对象:使用QNetworkRequest对象指定要访问的URL。 创建QNetworkAccessManager对象:使用QNetworkA…

【漏洞复现】用友NC registerServlet JNDI 远程代码执行漏洞(XVE-2024-10248)

0x01 产品简介 用友NC是 用友软件股份有限公司开发的一套企业级管理软件系统。它是一个基于互联网的多层应用系统&#xff0c;旨在为中大型企业提供全面、集成的管理解决方案。是一种商业级的企业资源规划云平台&#xff0c;为企业提供全面的管理解决方案&#xff0c;包括财务…

深度学习中的梯度消失和梯度爆炸问题

在深度学习领域&#xff0c;随着模型层数的增加&#xff0c;我们常常会遇到两个棘手的问题&#xff1a;梯度消失&#xff08;Vanishing Gradients&#xff09;和梯度爆炸&#xff08;Exploding Gradients&#xff09;。这两个问题严重影响了深度神经网络的训练效率和性能。本文…

SwiftUI中EnvironmentObject的使用(多界面共享数据)

SwiftUI的EnvironmentObject是一个强大的工具&#xff0c;它允许你在多个视图之间共享数据(使用一个可观察对象)。当你有一个复杂的视图层次结构&#xff0c;并且需要在没有直接连接的视图之间共享相同的可观察对象时&#xff0c;它特别有用。 我们之前传递数据主要是通过init…

Nginx R31 doc-16-logging 配置日志

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

SOLIDWORKS正版一年多少钱 2024版报价

SOLIDWORKS软件作为一款优秀的三维设计工具&#xff0c;以其强大的功能和优质的设计工具&#xff0c;为设计师们提供了前所未有的便利。SOLIDWORKS三维设计软件是一款多科学集成软件&#xff0c;它在产品开发和制造方面发挥着重要作用。 作为整个SOLIDWORKS产品开发解决方案套件…

SQL使用函数给多个分表添加同一字段

数据库中分表时&#xff0c;往往需要向多个分表中添加同一个字段&#xff0c;可以定义一个函数&#xff0c;每次调用这个函数向多个份表中添加同意字段。 1、创建函数示例&#xff1a; 在PostgreSQL中创建一个简单的函数 以下是一个在PostgreSQL中创建函数的简单示例&#x…

kotlin基础之高阶函数

Kotlin中的高阶函数、内联函数以及noinline和crossinline关键字是函数式编程中的重要概念。下面我将逐一解释这些概念的定义、实现原理、使用场景以及noinline和crossinline关键字的具体用法。 高阶函数 定义&#xff1a;高阶函数是接受一个或多个函数作为参数&#xff0c;或…

android上用QT实现绘制曲线及双指放大缩小

Android上用QT绘制曲线有多个绘图库可用,比如QCustomPlot,Qwt,Qchart,但经过博主测试在Android上并不是每种库都能满足要求,本文会进行三者对比,并给出一个android上可以实现双指滑动和放大缩小的具体解决方案及代码示例。 一.三种QT绘图库介绍 1.QCustomPlot在windows系统…

如何修改 Kafka 消息保留时长:经验总结

如何修改 Kafka 消息保留时长&#xff1a;经验总结 引言 Apache Kafka 是一种高性能的分布式消息系统&#xff0c;用于处理实时数据流。在实际使用中&#xff0c;我们可能需要根据业务需求调整 Kafka 消息的保留时长。本文将介绍如何修改 Kafka 消息保留时长&#xff0c;并分…

SEO之核心关键词(二)

初创企业或者需要建站的朋友看以下两篇文章&#xff0c;谢谢支持&#xff1a; 我给不会敲代码又想搭建网站的人建议新手上云 &#xff08;接上一篇。。。。&#xff09; 4、查询搜索次数 经过自己及朋友、同事的头脑风暴和检查竞争对手网站之后&#xff0c;再到Google 关键词…

用天工AI写文章,节约了8个人的成本

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 当下AI工具最大的问题是什么? 是写的文章没有灵魂、没有感情、像机器人! 生成的文章官话连篇&#xff0c;人们一眼就看出是AI写的&#xff0c;这种文章怎么能给客户交差呢?自己这关都过不去&#xff0c;是吧? …

快乐数-力扣

使用一个set来存储遇到的每个数&#xff0c;如果遇到的数在set中&#xff0c;那么说明这个数不是快乐数&#xff0c;否则一直循环下去&#xff0c;直到n 1结束循环&#xff0c;表示这个数是个快乐数。 需要注意的是&#xff0c;给定一个数 n, 怎样对这个数 n 进行每一位求和。…

33 mid 55. 跳跃游戏

贪心算法&#xff1a; class Solution {public boolean canJump(int[] nums) {int leftBorder 0;for (int i 0; i <nums.length; i) {if(i<leftBorder){leftBorderMath.max(leftBorder,inums[i]);}if(leftBorder>nums.length-1){return true;}}return false;} }