当前位置: 首页 > news >正文

[Mysql] Connector / C++ 使用

一、Connector / C++ 使用

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

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

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

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

进入

安装完成后,MySQL 服务会自动启动。可以通过以下命令检查 MySQL 服务状态:

详细配置教程可见:

[MySQL#0] 详解如何在 Linux 上安装 MySQL | 常见登录问题

查看库


二、准备工作

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。

mysql_query


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 结构体里。

http://www.lryc.cn/news/590712.html

相关文章:

  • 二分查找算法(一)
  • 多目标优化|HKELM混合核极限学习机+NSGAII算法工艺参数优化、工程设计优化,四目标(最大化输出y1、最小化输出y2,y3,y4),Matlab完整源码
  • WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!
  • 代码随想录算法训练营完结篇
  • 主流 TOP5 AI智能客服系统对比与推荐
  • Raydium CLMM 协议
  • Gradle vs Maven:构建工具世纪对决 —— 像乐高积木与标准模型之间的选择艺术
  • Transform的重要方法
  • excel分组展示业绩及增长率
  • 归一化与激活函数:深度学习的双引擎
  • 【WRFDA数据教程第一期】LITTLE_R 格式详细介绍
  • opencv 值类型 引用类型
  • 身份证号码姓名认证解决方案-身份证三要素API接口
  • Python+Selenium自动化
  • 【python】sys.executable、sys.argv、Path(__file__) 在PyInstaller打包前后的区别
  • Linux内核IPv4路由查找:LPC-Trie算法的深度实践
  • 门级网标仿真的时钟异常检查
  • 【C++高阶四】红黑树
  • ELK日志分析,涉及logstash、elasticsearch、kibana等多方面应用,必看!
  • 线程规则的制定者二:线程安全与冲入问题
  • 坚持继续布局32位MCU,进一步完善产品阵容,96Mhz主频CW32L012新品发布!
  • 选择亿林数据软件测试服务,为哈尔滨企业数字化转型赋能
  • 一叶障目不见森林
  • adb性能测试命令
  • 【知识图谱】Neo4j桌面版运行不起来怎么办?Neo4j Desktop无法打开!
  • Python18 —— 文件的写入
  • 大模型 认知能力 生物学启发
  • oracle会话控制和存储状态查询
  • Swift6.0基础知识 -- 可选2
  • 万字长文解析 OneCode3.0 AI创新设计