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);
相关推荐
付出不多19 分钟前
linux——mysql高可用
linux·运维·mysql
观无1 小时前
数据库DDL
数据库·oracle
消失在人海中1 小时前
Oracle 内存优化
数据库·oracle
昭阳~2 小时前
MySQL读写分离
数据库·mysql
duapple3 小时前
Golang基于反射的ioctl实现
开发语言·后端·golang
勇闯逆流河5 小时前
【数据结构】堆
c语言·数据结构·算法
jjkkzzzz5 小时前
Linux下的c/c++开发之操作Redis数据库
数据库·c++·redis
老华带你飞5 小时前
实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·实习记录小程序
my_styles6 小时前
docker-compose部署项目(springboot服务)以及基础环境(mysql、redis等)ruoyi-ry
spring boot·redis·后端·mysql·spring cloud·docker·容器