C语言数据库探索:适合初学者,探索C语言如何与数据库交互

1. C语言连接MySQL

  1. 安装 MySQL 客户端开发库 : 首先,您需要确保已安装 MySQL 的客户端开发库。在 CentOS 上,您可以使用 yumdnf 命令来安装这些库。
bash 复制代码
sudo yum install mysql-devel
  1. 编写代码 : 创建一个名为 mysql_connect.c 的文件,并输入以下代码:

    • host:指定要连接的 MySQL 服务器的主机名或 IP 地址

    • user:用于登录数据库的用户名

    • password:对应于 user 的密码,用于身份验证

    • database:要连接的数据库名称。如果成功连接,后续操作将针对这个数据库进行。

    • your_table:要连接的数据库中的表名。

c 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    // 初始化MySQL环境
    conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "mysql_init() failed\n");
        return EXIT_FAILURE;
    }

    // 连接到数据库
    if (mysql_real_connect(conn, "localhost", "username", "password", 
                           "database_name", 0, NULL, 0) == NULL) {
        fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // 执行查询
    if (mysql_query(conn, "SELECT * FROM your_table")) {
        fprintf(stderr, "SELECT * FROM your_table failed. Error: %s\n",
                mysql_error(conn));
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    res = mysql_store_result(conn);
    if (res == NULL) {
        fprintf(stderr, "mysql_store_result() failed. Error: %s\n",
                mysql_error(conn));
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // 输出结果集
    while ((row = mysql_fetch_row(res)) != NULL) {
        for (unsigned int i = 0; i < mysql_num_fields(res); i++) {
            printf("%s ", row[i] ? row[i] : "NULL");
        }
        printf("\n");
    }

   // 清理资源
   mysql_free_result(res);

   // 关闭数据库连接
   mysql_close(conn);

   return EXIT_SUCCESS;
}
  1. 编译代码 : 使用 gcc 编译您的程序,并链接 MySQL 库。
bash 复制代码
gcc -std=c99 -o mysql_connect mysql_connect.c $(mysql_config --cflags) $(mysql_config --libs)
  1. 运行程序: 确保您的 MySQL 服务正在运行,然后执行生成的可执行文件:
bash 复制代码
./mysql_connect
  1. 运行结果 : 成功输出数据库mydatabase中的employees表中的内容
bash 复制代码
1 Alice Smith Software Engineer 
2 Bob Johnson Data Analyst 
3 Charlie Brown Product Manager 

2. MySQL接口

  • mysql_init():初始化一个MYSQL对象,用于存储连接信息。

语法:

c 复制代码
MYSQL *mysql_init(MYSQL *mysql);
  • mysql_real_connect():建立与MySQL服务器的连接。

语法:

c 复制代码
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long clientflag);
  • mysql_query():向MySQL服务器发送一条 SQL 查询。

语法:

c 复制代码
int mysql_query(MYSQL *mysql, const char *q);
  • mysql_store_result():获取查询结果集。

语法:

c 复制代码
MYSQL_RES *mysql_store_result(MYSQL *mysql);
  • mysql_fetch_row():从结果集中获取下一行数据。

语法:

c 复制代码
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
  • mysql_free_result():释放结果集占用的内存。

语法:

c 复制代码
void mysql_free_result(MYSQL_RES *result);
  • mysql_close():关闭与MySQL服务器的连接。

语法:

c 复制代码
void mysql_close(MYSQL *mysql);
相关推荐
guodingdingh2 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯4 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
GuWenyue4 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
掘金码甲哥4 小时前
这块终端神器, 必须吹爆!
后端
糖果店的幽灵4 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
Csvn5 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
我叫洋洋5 小时前
C ++ [ hello world ]
c语言·c++·算法
Miao121316 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
CodexDave6 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
碎光拾影6 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库