Mysql Connect -- 详解 - 指南

一、Connector / C 使用

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

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

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

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

二、准备工作

1、验证库是否引入成功

否引入成功就是1、验证库

编译并运行:

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

三、MySQL 接口介绍

MySQL :: Developer Zone

可能自行选择:


1、初始化 mysql_init()

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

2、链接数据库 mysql_real_connect

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

第一个参数 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);

posted @ 2025-08-19 12:31  wzzkaifa  阅读(28)  评论(0)    收藏  举报