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);
相关推荐
骄马之死6 小时前
SpringMVC + SpringBoot 核心知识点总结
java·spring boot·后端
AOwhisky7 小时前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
GoGeekBaird7 小时前
Anthropic技能"(Skills)的经验分享
后端
小红卒7 小时前
mysql之udf提权
数据库·mysql·网络安全
司悠7 小时前
【解决在vscode里开服务器登录codeX后发消息会一直reconnecting】
服务器·ide·vscode
倔强的石头1067 小时前
Fooocus开源神器+cpolarAI让绘画告别服务器依赖
运维·服务器·cpolar
Ajie'Blog7 小时前
Copilot Agent Tasks API 开放:AI 编程开始进入后台任务时代
服务器·前端·javascript·人工智能·copilot·ai编程
wei_shuo7 小时前
服务器挂了等用户投诉才发现?我用Beszel搭了轻量监控系统,宕机第一时间通知我
运维·服务器
王码码20357 小时前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
郑洁文8 小时前
基于Spring Boot的流浪动物救助网站
java·spring boot·后端·毕设·流浪动物救助