C语言连接Mysql

目录

C语言连接Mysql

下载 mysql 开发库

方法一:使用 apt直接下载

bash 复制代码
sudo apt-get install libmysqlclient-dev

下载完后,可以查看库文件位置

bash 复制代码
dpkg -S libmysqlclient.so |grep libmysqlclient-dev

头文件是在默认头文件位置

bash 复制代码
ls /usr/include/
# 输出如下

方法二:也可以自己手动去官网下载: 库下载

安装过程略,可以参考使用apt索引包下载

方法介绍

mysql_init()

初始化一个连接实例

mysql_real_connect()

连接到mysql服务器

mysql_query()

执行查询命令

mysql_store_result()

获取查询结果

mysql_num_fields()

获取字段个数

mysql_fetch_fields()

获取字段名称列表

mysql_fetch_row()

获取每一行的数据

mysql_free_result()

释放结果内存

mysql_close()

关闭 mysql 连接

完整代码

c 复制代码
#include <mysql/mysql.h>
#include <stdio.h>
 
int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
 
    const char *server = "localhost"; // 数据库服务器地址
    const char *user = "root"; // 数据库用户名
    const char *password = "baseword"; // 数据库密码
    const char *database = "base001"; // 数据库名
 
    conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "mysql_init() failed\n");
        return 1;
    }
 
    // 连接到MySQL服务器
    if (mysql_real_connect(conn, server, user, password, database, 0, NULL, 0) == NULL) {
        fprintf(stderr, "mysql_real_connect() failed\n");
        mysql_close(conn);
        return 1;
    }
 
    // 执行SQL查询
    if (mysql_query(conn, "SELECT * FROM users")) {
        fprintf(stderr, "mysql_query() failed\n");
        mysql_close(conn);
        return 1;
    }
 
    // 获取查询结果
    res = mysql_store_result(conn);
    if (res == NULL) {
        fprintf(stderr, "mysql_store_result() failed\n");
        mysql_close(conn);
        return 1;
    }

    printf("Table: your_table\n");
    //打印列名
    int fieldnum = mysql_num_fields(res);
    MYSQL_FIELD *field = mysql_fetch_fields(res);
    for (int i = 0; i < fieldnum; i++)
    {
        printf("%s\t",field[i].name);
    }
    printf("\n");
 
    // 输出结果集的每一行数据
    while ((row = mysql_fetch_row(res)) != NULL) {
        //printf("%s %s %s", row[0],row[1]); // 假设第一列是我们要打印的列,根据实际情况调整索引
        for (int i = 0; i < mysql_num_fields(res); i++) {
            // row[i] 指向当前列的数据,如果数据为 NULL,则 row[i] 也为 NULL
            printf("%s\t", row[i] ? row[i] : "NULL");
        }
        printf("\n"); // 打印完一行后换行
    }

    mysql_free_result(res); // 释放结果集内存
    mysql_close(conn); // 关闭数据库连接
    return 0;
}
相关推荐
南棱笑笑生18 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
云贝贝贝20 小时前
腾讯云 TDSQL(MySQL 版)运维高频 6 坑:代理路由、读写分离、分片键、监控、PITR
运维·mysql·腾讯云
2601_962295991 天前
嵌入式开发语言用哪个最好,C,python或者其他
c语言·python·嵌入式开发·开发效率·系统资源
山岚的运维笔记1 天前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
是隼人1 天前
buuctf-pwn [HarekazeCTF2019]baby_rop2(64位ret2libc)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
wuyk5551 天前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
JavaPub-rodert1 天前
Redis 和 MySQL 如何保证数据一致性?从业务方案到底层原理完整讲解
数据库·redis·mysql
AAA代码批发商1 天前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
笑梦无境1 天前
mysql的安装及配置(3)
数据库·mysql·adb
Gent_倪1 天前
MySQL分库、分表、分区详解
数据库·mysql