首页 > 数据库 >【MySQL】MySQL Connect -- 详解

【MySQL】MySQL Connect -- 详解

时间:2024-06-03 20:00:15浏览次数:12  
标签:-- RES mysql 获取 Connect MYSQL MySQL result

一、Connector / C 使用

要使用 C 语言连接 MySQL,需要使用 MySQL 官网提供的库,可以去官网进行下载:MySQL :: MySQL Community Downloads

我们使用 C 接口库来进行连接,要正确使用,还需要做一些准备工作:

  • 保证 MySQL 服务有效。
  • 在官网上下载合适自己平台的 MySQL Connect 库,以备后用。

现在可以不需要像上面这样做了,因为我们在安装数据库时,系统就已经帮我们安装好了。


二、准备工作

1、验证库是否引入成功

编译并运行:

可以查看到当前 mysql 客户端的版本号。


三、MySQL 接口介绍

MySQL :: Developer Zone

可以自行选择:


1、初始化 mysql_init()

要使用库,就必须先进行初始化


2、链接数据库 mysql_real_connect

初始化完毕之后,必须先链接数据库,在进行后续操作(MySQL 网络部分是基于 TCP/IP的)。

第一个参数 MYSQL 是 C api 中一个非常重要的变量(mysql_init 的返回值),里面内存非常丰富,有 port,dbname,charset 等连接基本参数。它也包含了一个叫 st_mysql_methods 的结构体变量,该变量里面保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。

建立好链接之后,获取英文没有问题,如果获取中文是乱码:需要设置链接的默认字符集为 utf-8,原始默认是 latin1。


3、下发 MySQL 命令 mysql_query

第二个参数是要执行的 sql 语句,如 select * from table。


4、获取执行结果 mysql_store_result

sql 执行完以后,如果是查询语句,当然还要读取数据。如果 update,insert 等语句,那么就看下操作成功与否即可。

来看看如何获取查询结果: 如果 mysql_query 返回成功,那么就通过 mysql_store_result 这个函数来读取结果。原型如下:

该函数会调用 MYSQL 变量中的 st_mysql_methods 中的 read_rows 函数指针来获取查询的结果,同时该函数还会返回 MYSQL_RES 这样一个变量,这个变量主要用于保存查询的结果。同时该函数 malloc 了一片内存空间来存储查询过来的数据,所以一定要记得 free(result),不然肯定会造成内存泄漏的。 执行完 mysql_store_result 后,其实数据都已经在 MYSQL_RES 变量中了,下面的 api 基本就是读取 MYSQL_RES 中的数据。

 MYSQL_RES 结构体可以行列为单位把查询得到的表结构数据组织好。

在我们使用 mysql_query 函数进行查询结果后,对应的数据就被存放进了 MYSQL 结构体响应的空间中,此时我们再调用 mysql_store_result 函数,把这部分数据转储进 MYSQL_RES 结构体里。


(1)获取结果行数 mysql_num_rows


(2)获取结果列数 mysql_num_fields


(3)获取列名 mysql_fetch_fields

MYSQL_FIELD 中存储列的所有属性信息:


(4)获取结果内容 mysql_fetch_row

它会返回一个 MYSQL_ROW 变量,MYSQL_ROW 其实就是 char**,就把它当作一个二维数组来用。

注意:mysql 将所有的数据读取出来时,全都当作字符串。


5、释放结果集的空间 mysql_free_result


6、关闭 MySQL 链接 mysql_close


MySQL C api 还支持事务等常用操作,可以自行了解:

my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
my_bool STDCALL mysql_commit(MYSQL * mysql);
my_bool STDCALL mysql_rollback(MYSQL * mysql);

标签:--,RES,mysql,获取,Connect,MYSQL,MySQL,result
From: https://blog.csdn.net/weixin_74531333/article/details/136433692

相关文章

  • 【Linux 网络】高级 IO -- 详解
    一、IO的基本概念I/O(input/output)也就是输入和输出,在冯诺依曼体系结构当中,将数据从输入设备拷贝到内存就叫作输入,将数据从内存拷贝到输出设备就叫作输出。对文件进行的读写操作本质就是一种IO,文件IO对应的外设就是磁盘。对网络进行的读写操作本质也是一种IO,网络IO对......
  • STM32 - 串口通信(HAL库)
    为什么要用HAL库?使用方便,可以完全使用GUI配置、支持更多的芯片型号和开发板、良好的封装与抽象、Easy上手和开发有什么缺点?封装层次较高,造成稍微的性能损失STM32cubemx部分以使用stm32系列的NUCLEO-F03RB为例1.配置时钟选择STM32F103RCTx系列芯片,配置时钟的同时会......
  • 分频器的应用
    分频器的应用设计输出频率为2KHz,占空比为0~100%可调PWM信号的应用电路。要求占空比的分辨率为1%。 分析要求占空比为0~100%可调,分辨率为1%。应该有101种,用复位信号控制占空比为1,用100进制BCD码计数器控制占空比为0~99%。开发板提供50MHz时钟,分频至2KHz,50M/2k=25k要产生1......
  • Excel+Python:飞速搞定数据分析与处理 (费利克斯•朱姆斯坦)阅读与关键技术分享
    书:pan.baidu.com/s/1owku2NBxL7GdW59zEi20AA?pwd=suov​提取码:suov我的阅读笔记:数据导入与导出: 使用Python的pandas库可以轻松地将数据从Excel导入到数据框中,并进行各种数据转换和清理。同样,你也可以将Python中的处理结果导出到Excel文件中。数据清理: 利用Python的pandas......
  • 2021新书Python程序设计 人工智能案例实践 Python编程人工智能基本描述统计集中趋势和
    书:pan.baidu.com/s/1owku2NBxL7GdW59zEi20AA?pwd=suov​提取码:suov我的阅读笔记:图像识别:使用深度学习框架(如TensorFlow、PyTorch)创建图像分类模型。探索迁移学习,使用预训练模型进行定制。自然语言处理(NLP):构建一个情感分析模型,用于分析文本中的情感。实现一个文本生成模型,......
  • 记一次基于倒序索引的SQL优化
    本文测试环境为SQLserver2019背景某业务流水表,会基于固定范围内的业务编号做写入以及查询操作,热数据的量级在亿级别,一个典型的查询是基于业务编码查询最新(时间戳)某种状态的前N条数据简化后的表结构如下createtableTestTable01(idbigintidentit......
  • Linux基础命令
    Linux基础命令Linux命令大全搜索工具(可能需要翻墙)web镜像文章目录lspwdcdtouchmkdirrmdirrmmancpmvcatmorelesshead1taildatecalfindgrepzipunziptarbcunameshutdownLinux系统对于大小写是敏感的,因此输入命令需要注意大小写1.ls指令语法:ls[选项]目录/文件......
  • 掘金AI 商战 宝典 初级班:如何用AI做文案(实战实操 现学现用 玩赚超值)
    在这个AI技术飞速发展的时代,你是否担心自己会被淘汰?别怕,今天我要给大家介绍一门超实用的课程——掘金AI商战宝典初级班:如何用AI做文案。这门课程将教会你如何利用AI技术,成为那0.01%的领先者!首先,我们要明白,AI在文案创作中的作用。它可以帮你快速生成文章、视频脚本、演讲稿......
  • HarmonyOS NEXT星河版之自定义List下拉刷新与加载更多
    文章目录一、加载更多二、下拉刷新三、小结一、加载更多借助List的onReachEnd方法,实现加载更多功能,效果如下:@ComponentexportstructHPList{//数据源@PropdataSource:object[]=[]//加载更多是否ing@StateisLoadingMore:boolean=false......
  • 【精品毕设】汽车配件销售企业连锁店管理系统(包含论文和源码)
    摘要目前汽车配件销售企业大多数在其连锁店的管理还是手工进行,随着汽车配件行业的迅速发展,手工管理的种种弊端暴露无疑,给销售企业的发展带来了不必要的麻烦。为了规范企业内部管理,提高企业业务管理水平,更好的为客户服务,应采用计算机来管理汽车配件的进销存业务。本文首先对......