CentOS 7上编写C程序访问MySQL数据表
文章目录
- 1. 实战概述
- 2. 实战任务
- 2.1 下载并安装 MySQL Yum 仓库 RPM
- 2.1.1 下载 MySQL 8.0 仓库包
- 2.1.2 安装 MySQL 8.0 仓库包
- 2.2 安装 MySQL 开发库
- 2.3 准备数据库和表
- 2.3.1 进入 MySQL 客户端
- 2.3.2 使用西蒙商店数据库
- 2.3.3 查看用户表全部记录
- 2.3.4 退出 MySQL 客户端
- 2.4 编写 C 程序查询用户表
- 2.5 编译查询全部用表的 C 程序
- 2.6 运行查询全部用表的 C 程序
- 3. 实战总结
1. 实战概述
- 本次实战在CentOS 7上完成C语言连接MySQL 8.0的开发环境搭建与编程实践。通过安装MySQL官方Yum源及开发库,配置编译环境,编写并编译C程序成功查询数据库表数据,掌握了MySQL C API的基本使用,实现了从数据库连接、查询到结果输出的完整流程,验证了开发环境的正确性与程序的可靠性。
2. 实战任务
2.1 下载并安装 MySQL Yum 仓库 RPM
2.1.1 下载 MySQL 8.0 仓库包
- 执行命令:
wget https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm

2.1.2 安装 MySQL 8.0 仓库包
- 执行命令:
rpm -ivh mysql80-community-release-el7-10.noarch.rpm

- 安装后,会在
/etc/yum.repos.d/下生成mysql-community-debuginfo.repo、mysql-community.repo与mysql-community-source.repo三个文件。 - 执行命令:
ll /etc/yum.repos.d/mysql*

- 执行命令:
yum repolist enabled | grep mysql,验证仓库是否启用

2.2 安装 MySQL 开发库
- 执行命令:
yum -y install mysql-community-devel,安装 MySQL 的头文件和静态库,用于编译 C 程序。


- 执行命令:
mysql_config --cflags --libs,验证 MySQL 开发库是否安装成功

- 结果说明:执行
mysql_config --cflags --libs成功输出编译和链接参数,表明 MySQL 开发库已正确安装。输出包含头文件路径、库路径及依赖项(如-lmysqlclient、-lpthread等),可用于编译 C 程序连接 MySQL 数据库,说明开发环境配置成功,具备进行 MySQL C API 编程的条件。
2.3 准备数据库和表
2.3.1 进入 MySQL 客户端
- 执行命令:
mysql -uroot -p903213

2.3.2 使用西蒙商店数据库
- 执行命令:
use simonshop

- 执行命令:
show tables;

2.3.3 查看用户表全部记录
- 执行命令:
select * from t_user;

2.3.4 退出 MySQL 客户端
- 执行命令:
exit

2.4 编写 C 程序查询用户表
-
执行命令:
find_all_users.c

#include <stdio.h> #include <stdlib.h> #include <mysql.h>int main() {MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;// 数据库连接参数char *server = "master";char *user = "root";char *password = "903213"; char *database = "simonshop";// 初始化连接conn = mysql_init(NULL);if (!conn) {fprintf(stderr, "MySQL 初始化失败\n");exit(1);}// 连接数据库if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {fprintf(stderr, "连接失败: %s\n", mysql_error(conn));mysql_close(conn);exit(1);}// 执行查询if (mysql_query(conn, "SELECT * FROM t_user")) {fprintf(stderr, "查询失败: %s\n", mysql_error(conn));mysql_close(conn);exit(1);}res = mysql_store_result(conn);// 获取字段数int num_fields = mysql_num_fields(res);// 输出结果while ((row = mysql_fetch_row(res))) {for(int i = 0; i < num_fields; i++) {printf("%s ", row[i] ? row[i] : "NULL");}printf("\n");}// 释放结果,关闭连接mysql_free_result(res);mysql_close(conn);return 0; } -
代码说明:该C程序连接MySQL数据库,查询
simonshop库中的t_user表并输出所有记录。程序初始化连接,验证登录信息,执行SQL查询,逐行读取结果并打印字段值,最后释放资源。return 0表示执行成功。需确保已安装MySQL开发库并正确链接。
2.5 编译查询全部用表的 C 程序
- 执行命令:
gcc find_all_users.c -o find_all_users $(mysql_config --cflags --libs) -std=c99

- 命令说明:该命令使用
gcc编译 C 程序find_all_users.c,通过mysql_config --cflags --libs自动获取 MySQL 开发库的编译和链接参数,并指定-std=c99启用 C99 标准,以支持在for循环中定义变量。编译成功后生成可执行文件find_all_users,用于连接 MySQL 数据库并查询数据。
2.6 运行查询全部用表的 C 程序
- 执行命令:
./find_all_users

- 结果说明:执行
./find_all_users成功连接 MySQL 数据库,查询并输出t_user表中所有用户信息。结果包含用户ID、姓名、手机号、注册时间及角色,共4条记录,格式清晰。说明程序正确实现数据库连接、SQL查询与结果遍历,开发环境配置完整,MySQL C API 调用成功。
3. 实战总结
- 本次实战在 CentOS 7 环境下成功搭建了 C 语言连接 MySQL 8.0 的开发环境。首先通过安装 MySQL 官方 Yum 仓库,部署
mysql-community-devel开发包,解决头文件与库依赖问题。随后编写 C 程序,利用 MySQL C API 实现数据库连接、SQL 查询及结果集遍历,成功输出t_user表中全部用户信息。编译过程中引入-std=c99参数以支持现代 C 语法,确保程序顺利编译。整个实践涵盖了环境配置、代码编写、编译链接到运行验证的完整流程,不仅掌握了mysql_init、mysql_query、mysql_store_result等核心函数的使用,也加深了对 MySQL 客户端编程机制的理解,为后续开发高性能数据库应用奠定了坚实基础。
