CentOS 7上编写C程序访问MySQL数据表

文章目录

  • [1. 实战概述](#1. 实战概述)
  • [2. 实战任务](#2. 实战任务)
    • [2.1 下载并安装 MySQL Yum 仓库 RPM](#2.1 下载并安装 MySQL Yum 仓库 RPM)
      • [2.1.1 下载 MySQL 8.0 仓库包](#2.1.1 下载 MySQL 8.0 仓库包)
      • [2.1.2 安装 MySQL 8.0 仓库包](#2.1.2 安装 MySQL 8.0 仓库包)
    • [2.2 安装 MySQL 开发库](#2.2 安装 MySQL 开发库)
    • [2.3 准备数据库和表](#2.3 准备数据库和表)
      • [2.3.1 进入 MySQL 客户端](#2.3.1 进入 MySQL 客户端)
      • [2.3.2 使用西蒙商店数据库](#2.3.2 使用西蒙商店数据库)
      • [2.3.3 查看用户表全部记录](#2.3.3 查看用户表全部记录)
      • [2.3.4 退出 MySQL 客户端](#2.3.4 退出 MySQL 客户端)
    • [2.4 编写 C 程序查询用户表](#2.4 编写 C 程序查询用户表)
    • [2.5 编译查询全部用表的 C 程序](#2.5 编译查询全部用表的 C 程序)
    • [2.6 运行查询全部用表的 C 程序](#2.6 运行查询全部用表的 C 程序)
  • [3. 实战总结](#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.repomysql-community.repomysql-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

    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_initmysql_querymysql_store_result 等核心函数的使用,也加深了对 MySQL 客户端编程机制的理解,为后续开发高性能数据库应用奠定了坚实基础。
相关推荐
magic334165631 小时前
ESP32S3开发环境介绍和创建工程
vscode·c·头文件
charlie1145141917 小时前
嵌入式现代C++工程实践——第10篇:HAL_GPIO_Init —— 把引脚配置告诉芯片的仪式
开发语言·c++·stm32·单片机·c
charlie1145141911 天前
嵌入式Linux模块学习——insmod 底层全流程解剖:从用户命令到内核内存
linux·c·嵌入式linux
charlie1145141911 天前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
charlie1145141912 天前
嵌入式Linux模块开发——struct module 深度解析:内核模块的核心数据结构
linux·开发语言·数据结构·c
charlie1145141912 天前
通用GUI编程技术——图形渲染实战(二十七)——坐标变换与矩阵:三级坐标系
c++·学习·c·图形渲染·win32
Trouvaille ~3 天前
【MySQL篇】从零开始:安装与基础概念
linux·数据库·mysql·ubuntu·c·教程·基础入门
洛水水3 天前
io_uring 深度解析
c·异步io·iouring
REDcker3 天前
Android Bionic Libc 原理与实现综述
android·c++·c·ndk·native·bionic
charlie1145141914 天前
通用GUI编程技术——图形渲染实战(二十四)——GDI Region与裁切:不规则窗口与可视化控制
c++·windows·学习·c·图形渲染·win32