您的位置:首页 > 教育 > 培训 > C语言怎么链接mysql数据库

C语言怎么链接mysql数据库

2025/9/19 17:33:01 来源:https://blog.csdn.net/zzx2016zzx/article/details/140809439  浏览:    关键词:C语言怎么链接mysql数据库

在C语言中连接数据库通常通过调用数据库提供的API来实现,比如MySQL的C API。以下是一个使用MySQL C API连接数据库并获取数据的示例。

前提条件

  1. 安装MySQL服务器和客户端。
  2. 安装MySQL开发库,例如libmysqlclient-dev。
  3. 确保您的开发环境中已经安装了MySQL的头文件和库文件。

示例代码

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>void finish_with_error(MYSQL *con) {fprintf(stderr, "%s\n", mysql_error(con));mysql_close(con);exit(1);
}int main() {MYSQL *con = mysql_init(NULL);if (con == NULL) {fprintf(stderr, "mysql_init() failed\n");exit(1);}if (mysql_real_connect(con, "localhost", "your_user", "your_password", "your_database", 0, NULL, 0) == NULL) {finish_with_error(con);}if (mysql_query(con, "SELECT * FROM your_table")) {finish_with_error(con);}MYSQL_RES *result = mysql_store_result(con);if (result == NULL) {finish_with_error(con);}int num_fields = mysql_num_fields(result);MYSQL_ROW row;MYSQL_FIELD *field;while ((row = mysql_fetch_row(result))) {for(int i = 0; i < num_fields; i++) {if (i == 0) {while(field = mysql_fetch_field(result)) {printf("%s ", field->name);}printf("\n");}printf("%s  ", row[i] ? row[i] : "NULL");}printf("\n");}mysql_free_result(result);mysql_close(con);exit(0);
}

编译和运行

在Linux系统中,可以使用以下命令编译和运行这个C程序。假设保存的文件名为mysql_example.c

gcc -o mysql_example mysql_example.c `mysql_config --cflags --libs`
./mysql_example

代码解释

  1. 包含头文件

    #include <mysql/mysql.h>
    

    这个头文件包含了MySQL C API的所有函数和数据结构。

  2. 初始化MySQL连接

    MYSQL *con = mysql_init(NULL);
    

    初始化一个MYSQL对象。

  3. 连接到数据库

    if (mysql_real_connect(con, "localhost", "your_user", "your_password", "your_database", 0, NULL, 0) == NULL) {finish_with_error(con);
    }
    

    使用mysql_real_connect函数连接到数据库。参数依次为:主机名、用户名、密码、数据库名、端口号、套接字和标志。

  4. 执行查询

    if (mysql_query(con, "SELECT * FROM your_table")) {finish_with_error(con);
    }
    

    使用mysql_query函数执行SQL查询。

  5. 存储查询结果

    MYSQL_RES *result = mysql_store_result(con);
    

    使用mysql_store_result函数将查询结果存储在MYSQL_RES结构中。

  6. 获取并打印结果

    int num_fields = mysql_num_fields(result);
    MYSQL_ROW row;
    while ((row = mysql_fetch_row(result))) {for(int i = 0; i < num_fields; i++) {printf("%s  ", row[i] ? row[i] : "NULL");}printf("\n");
    }
    

    使用mysql_fetch_row函数逐行获取查询结果并打印。

  7. 释放结果和关闭连接

    mysql_free_result(result);
    mysql_close(con);
    

    使用mysql_free_result函数释放结果集,并使用mysql_close函数关闭数据库连接。

处理错误

使用finish_with_error函数处理错误。如果发生错误,打印错误信息并关闭连接:

void finish_with_error(MYSQL *con) {fprintf(stderr, "%s\n", mysql_error(con));mysql_close(con);exit(1);
}

这样就可以通过C语言连接MySQL数据库并获取数据。确保替换示例中的your_useryour_passwordyour_databaseyour_table为实际的数据库用户名、密码、数据库名和表名。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com