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;其第一列为…

Sqoop的安装与测试

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

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

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

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

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

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

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

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

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

SEO之核心关键词(二)

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

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

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

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;} }

欢乐钓鱼大师攻略大全,游戏自动辅助,钓鱼大全!

欢迎来到《欢乐钓鱼大师》的攻略大全&#xff01;本文将为你详细介绍游戏中的各类玩法、技巧和注意事项&#xff0c;帮助你快速掌握游戏精髓&#xff0c;成为一名真正的钓鱼大师。攻略内容包括新手鱼竿选择、锦标赛攻略、实用技巧、藏宝图玩法、箱子开法等多个方面。让我们一起…

生成式AI模型大PK——GPT-4、Claude 2.1和Claude 3.0 Opus

RAG(检索增强生成)系统的新评估似乎每天都在发布&#xff0c;其中许多都集中在有关框架的检索阶段。然而&#xff0c;生成方面——模型如何合成和表达这些检索到的信息&#xff0c;在实践中可能具有同等甚至更大的意义。许多实际应用中的案例证明&#xff0c;系统不仅仅要求从上…

Leecode热题100---二分查找---搜索插入位置

题目&#xff1a; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 nums 为 无重复元素 的 升序 排列数组 常规思路&#xff1a; class Solution { public:int f…

管理node——NVM安装及使用

NVM安装及使用 前言正文下载安装及配置一、卸载原有的node版本&#xff08;很重要&#xff01;&#xff01;&#xff01;&#xff09;- 卸载node- 清除npm相关文件 二、安装nvm&#xff0c;添加镜像1.nvm自定义安装位置2.nodejs版本存放位置- 未解决&#xff0c;无限踩坑- 已解…

crossover玩游戏缺少文件怎么办 为什么游戏打开说缺失文件 crossover支持的游戏列表 CrossOver 提示 X 11 缺失怎么办?

CrossOver是一款类虚拟机软件&#xff0c;可以实现在Mac电脑上运行exe程序。不少Mac用户为了玩游戏&#xff0c;选择使用CrossOver这款软件玩Windows平台的游戏。 一、CrossOver支持的软件多吗 CrossOver是一款基于Wine的兼容工具&#xff0c;它可以让你在Mac或Linux上运行许多…

解读makefile中的.PHONY

在 Makefile 中&#xff0c;.PHONY 是一个特殊的目标&#xff0c;用于声明伪目标&#xff08;phony target&#xff09;。伪目标是指并不代表实际构建结果的目标&#xff0c;而是用来触发特定动作或命令的标识。通常情况下&#xff0c;.PHONY 会被用来声明一组需要执行的动作&a…

某有赞滑块验证码

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识&#xff0c;欢迎私信共享学习心得。 如有侵权&#xff0c;联系博主删除。 请勿商用&#xff0c;否则后果自负。 网址 aHR0cHM6Ly9wYXNzcG9ydC55b3V6YW4uY29tL2xvZ2luL3Bhc3N3b3Jk 1. 首先来分析一下参数 1_1. get-beh…

@ConfigurationProperties结合Nacos配置动态刷新之底层原理分析

Hello&#xff0c;我是大都督周瑜&#xff0c;本文给大家分析一下ConfigurationProperties结合Nacos配置动态刷新的底层原理&#xff0c;记得点赞、关注、分享哦&#xff01; 公众号&#xff1a;IT周瑜 应用背景 假如在Nacos中有Data ID为common.yml的配置项&#xff1a; m…

上海一儿童写真馆摄影师大量售卖女童照片!当你的肖像权或隐私权被侵犯时应如何写起诉状?

上海一儿童写真馆摄影师大量售卖女童照片&#xff01;当你的肖像权或隐私权被侵犯时应如何写起诉状&#xff1f; 近日&#xff0c;上海市一儿童写真馆摄影师被指大量售卖女童的照片和特写花絮。对此&#xff0c; 上海市公安局徐汇分局发布了警情通报&#xff08;见下图&#x…