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);
相关推荐
香蕉你个不拿拿^7 分钟前
Linux粘滞位和文件,目录权限
linux·运维·服务器
Aerkui10 分钟前
Go 泛型(Generics)详解
开发语言·后端·golang
clive.li12 分钟前
go-webmvc框架推荐
开发语言·后端·golang
2401_8582861115 分钟前
OS52.【Linux】System V 共享内存(1)
linux·运维·服务器·共享内存
树獭叔叔18 分钟前
从向量到文字:Transformer 的预测与输出(LM Head)
后端·aigc
芝士爱知识a30 分钟前
【FinTech前沿】AlphaGBM:重塑期权交易的智能分析引擎——从原理到实践
数据结构·数据库·人工智能·alphagbm·期权
AC赳赳老秦30 分钟前
2026主权AI趋势:DeepSeek搭建企业自有可控AI环境,保障数据安全实战
大数据·数据库·人工智能·python·科技·rabbitmq·deepseek
仍然.33 分钟前
MYSQL---事务
数据库·mysql
橙序员小站34 分钟前
架构图不再手画:用 LikeC4 + AI,让架构“活”起来
后端·架构
king_harry38 分钟前
openGauss 6.0 主备集群备份与恢复实战指南:基于 gs_probackup
数据库·opengauss·gs_probackup