【MySQL】MySQL Connect -- 详解

一、Connector / C 使用

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

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

  • 保证 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 执行完以后,如果是查询语句,当然还要读取数据。如果 updateinsert 等语句,那么就看下操作成功与否即可。

来看看如何获取查询结果: 如果 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);

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

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

相关文章

[Windows] 植物大战僵尸杂交版

游戏包含冒险模式、挑战模式、生存模式三种不同玩法。冒险模式主打关卡闯关,挑战模式则挑战特殊设计的关卡,生存模式结合无尽模式和特殊地图,各具特色。玩家可根据喜好自由选择模式,体验不同的游戏乐趣。快来尝试这款独特的pvz游戏…

C++_deque:deque的数据结构特点

文章目录 🚀1. deque介绍🚀2. deque数据结构🚀3. deque的缺陷🚀4.为什么选择deque作为stack和queue的底层默认容器🚀5.deque头插逻辑(了解) 大家好!本文会简单讲讲deque的使用与数据…

html + js 实现单个标签内文本大小不一样的效果

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>价格显示示例</title><style>.small {font-size: 0.7em; /* 设置较小的字体大小 */color:red;}#price{color:red;}</style> <…

第24讲:Ceph集群RGW对象存储高可用集群部署与测试

文章目录 1.RGW对象存储高可用集群架构1.1.环境规划1.2.高可用集群架构图 2.部署RGW对象存储高可用集群2.1.在所有的Ceph节点中部署RGW2.2.部署Haproxy负载均衡服务2.3.配置Haproxy负载均衡三个节点中的RGW2.4.配置Keepalived实现RGW高可用集群2.5.启动Keepalived并观察VIP地址…

有本HCIE,作用真的不大

在现在内卷的时代&#xff0c;获得专业认证是提升个人职业竞争力的重要途径之一。 获取认证证书是一种常见的提升自身技能和职业竞争力的方法。 然而&#xff0c;仅仅持有一张证书&#xff0c;并不能保证你在实际工作中游刃有余。 真正将其知识转化为技术能力&#xff0c;才…

学会读书并不简单,如何真正学会读书

一、教程描述 读书是要讲究方法的&#xff0c;否则就会事倍功半&#xff0c;比如&#xff0c;在学习书本上的每一个问题每一章节的时候&#xff0c;首先应当不只看到书面上&#xff0c;而且还要看到书背后的东西&#xff0c;在对书中每一个问题都经过细嚼慢咽&#xff0c;其次…

ClickHouse如何整合数据源:MySQL、HDFS...

一、ClickHouse数据源 ClickHouse 作为一个强大的列式数据库管理系统&#xff0c;支持多种数据源&#xff0c;使得用户能够方便地将数据导入 ClickHouse 进行存储和分析。以下是常见的 ClickHouse 数据源&#xff1a; 外部数据源 HDFS&#xff1a; 支持从 Hadoop 分布式文件系…

0基础认识C语言(理论知识)

为了给0基础一个舒服的学习路径&#xff0c;就有了这个专栏希望带大家一起进步。 话不多说&#xff0c;开始正题。 一、C语言的一段小历史 C语言的设计要追溯到20世纪60年代末和70年代初&#xff0c;在那个时代美国有这么一号人叫做丹尼斯.里奇&#xff0c;他和同事肯.汤普逊…

小程序使用Canvas设置文字竖向排列

在需要使用的js页面引入js文件,传入对应参数即可 /** * 文本竖向排列 */ function drawTextVertical(context, text, x, y) {var arrText text.split();var arrWidth arrText.map(function (letter) {return 26; // 字体间距,需要自定义可以自己加参数,根据传入参数进行…

计算机网络学习实践:DHCP跨网段动态分配IP

计算机网络学习实践&#xff1a;DHCP跨网段动态分配IP 1.实验准备 实验环境&#xff1a;思科的模拟器 实验设备&#xff1a; 1个服务器&#xff0c;2个二层交换机&#xff08;不是三层的&#xff09;&#xff0c;4个PC机&#xff0c;1个路由器 三个网段 192.168.1.0 255.…

logback删除日志文件和文件夹

​​​​​一&#xff0c;事由和源码 logback版本1.2.11 网上找了很多都是无法删除文件夹的&#xff0c;原先使用的TimeBasedRollingPolicy无法删除日志的文件夹&#xff0c;有很多空的日期文件夹&#xff0c;于是查看TimeBasedRollingPolicy源码发现有校验不删除文件夹&#x…

Docker的网络管理

文章目录 一、Docker容器之间的通信1、直接互联&#xff08;默认Bridge网络&#xff09;1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…

46、Flink 的 异步 I/O 算子详解

异步 I/O 1.需求 在与外部系统交互&#xff08;用数据库中的数据扩充流数据&#xff09;时&#xff0c;需要考虑与外部系统的通信延迟对整个流处理应用的影响。 同步交互&#xff1a;使用 MapFunction访问外部数据库的数据&#xff0c; MapFunction 向数据库发送一个请求然后…

高级 Go 程序设计:使用 net/http/httputil 包构建高效网络服务

高级 Go 程序设计&#xff1a;使用 net/http/httputil 包构建高效网络服务 介绍ReverseProxy 的使用基本概念实现步骤高级配置实际案例 DumpRequest 的使用功能说明代码示例应用场景NewSingleHostReverseProxy 的特性功能概述 详细教程 注意事项使用 NewChunkedWriter 实现高效…

C语言 带头双向循环链表的基本操作

带头双向循环链表的基本操作 结构体定义初始化创建新节点头插头删尾插尾删查找在指定位置之后插入删除指定位置的值打印 结构体定义 typedef int DataType; typedef struct LinkNode {DataType data;struct LinkNode* prev;struct LinkNode* next; }LNode;初始化 有两种初始化…

远控免杀篇

0x00&#xff1a;前言 随着近两年hvv和红蓝对抗以及国家对于网络安全的重视&#xff0c;国内防护水平都蹭蹭上了一个台阶&#xff0c;不管是内部人员的技术水平提高还是防护设备的层层部署&#xff0c;均给了红队人员想要进一步行动设置了障碍。 通过weblogic的cve-2019-2725获…

MLPerf storage基准测试

MLPerf 基准测试 什么是 MLPerf&#xff1f;MLPerf™ 基准测试由来自学术界、研究实验室和行业的 AI 领导者联盟 MLCommons 开发&#xff0c;旨在对硬件、软件和服务的训练和推理性能进行无偏评估。它们都在规定的条件下进行。为了保持在行业趋势的前沿&#xff0c;MLPerf 不断…

C基础-标准库上

下:http://t.csdnimg.cn/LXa0J C 标准库是一组 C 内置函数、常量和头文件&#xff0c;比如 <stdio.h>、<stdlib.h>、<math.h>&#xff0c;等等。 目录 一. assert.h 二. ctype.h 三. errno.h 四. float.h 五.limits.h 六. locale.h 一. assert.h 源码…

166.二叉树:相同的树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

【机器学习】RLHF:在线方法与离线算法在大模型语言模型校准中的博弈

RLHF&#xff1a;在线方法与离线算法在大型语言模型校准中的博弈 一、引言二、RLHF概述三、在线方法与离线算法的对比四、实验验证与代码实例 一、引言 在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;的校准已成为一个备受关注的热点。基于人类反馈的强化…