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);
相关推荐
coco01242 分钟前
打造趣味策略游戏:OXO 网页游戏开发实战
后端·ai编程
笨笨马甲14 分钟前
附加模块--Qt SQL模块功能及架构解析
数据库·sql·qt
独爱竹子的功夫熊猫19 分钟前
数据库技巧:INSERT IGNORE的高效插入策略
数据库·后端·mysql
dremtri29 分钟前
双 Token 认证机制详解与完整 Demo
前端·后端
不想说话的麋鹿33 分钟前
《NestJS 实战:RBAC 系统管理模块开发 (三)》:角色权限分配与数据一致性
前端·后端·node.js
时序数据说37 分钟前
时序数据库IoTDB数据模型建模实例详解
大数据·数据库·开源·时序数据库·iotdb
码农101号40 分钟前
Linux中shell流程控制语句
linux·运维·服务器
水水沝淼㵘44 分钟前
嵌入式开发学习日志(数据库II && 网页制作)Day38
服务器·c语言·网络·数据结构·数据库·学习
时序数据说1 小时前
时序数据库IoTDB结合SeaTunnel实现高效数据同步
大数据·数据库·开源·时序数据库·iotdb
程序猿小D1 小时前
第26节 Node.js 事件
服务器·前端·javascript·node.js·编辑器·ecmascript·vim