在C语言中连接MySQL数据库,通常需要使用MySQL的C API,以下是一个详细的步骤,包括必要的库安装、配置以及代码示例。

安装MySQL开发库
您需要在您的系统上安装MySQL开发库,以下是几个常见操作系统的安装步骤:
| 操作系统 | 安装命令 |
|---|---|
| Ubuntu | sudo aptget install libmysqlclientdev |
| CentOS | sudo yum install mysqlcommunityclient |
| macOS | 使用Homebrew:brew install mysql |
包含必要的头文件
在您的C程序中,需要包含MySQL客户端库的头文件:
#include <mysql.h>
初始化连接
在连接数据库之前,需要初始化连接:
MYSQL *conn;
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init failed: %sn", mysql_error(conn));
exit(1);
}
连接到数据库
使用mysql_real_connect函数连接到数据库:
if (mysql_real_connect(conn, "host", "username", "password", "database", 0, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect failed: %sn", mysql_error(conn));
mysql_close(conn);
exit(1);
}
这里,“host”是MySQL服务器的地址,通常为“localhost”;“username”和“password”是登录数据库的用户名和密码;“database”是要连接的数据库名。

执行查询
连接成功后,可以执行SQL查询:
if (mysql_query(conn, "SELECT * FROM table_name")) {
fprintf(stderr, "mysql_query failed: %sn", mysql_error(conn));
mysql_close(conn);
exit(1);
}
获取查询结果
使用mysql_store_result函数获取查询结果:
MYSQL_RES *result = mysql_store_result(conn);
if (result == NULL) {
fprintf(stderr, "mysql_store_result failed: %sn", mysql_error(conn));
mysql_close(conn);
exit(1);
}
遍历结果集
使用mysql_fetch_row函数遍历结果集:
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)) != NULL) {
// 处理每一行数据
}
关闭连接
关闭数据库连接:
mysql_free_result(result); mysql_close(conn);
示例代码
以下是一个简单的示例,展示了如何连接到MySQL数据库并执行一个查询:

#include <mysql.h>
#include <stdio.h>
int main() {
MYSQL *conn;
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init failed: %sn", mysql_error(conn));
return 1;
}
if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect failed: %sn", mysql_error(conn));
mysql_close(conn);
return 1;
}
if (mysql_query(conn, "SELECT * FROM table_name")) {
fprintf(stderr, "mysql_query failed: %sn", mysql_error(conn));
mysql_close(conn);
return 1;
}
MYSQL_RES *result = mysql_store_result(conn);
if (result == NULL) {
fprintf(stderr, "mysql_store_result failed: %sn", mysql_error(conn));
mysql_close(conn);
return 1;
}
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)) != NULL) {
printf("%sn", row[0]);
}
mysql_free_result(result);
mysql_close(conn);
return 0;
}
FAQs
Q1: 如果连接失败,如何处理错误?
A1: 如果连接失败,可以通过mysql_error(conn)获取错误信息,并打印出来,然后关闭连接并退出程序。
Q2: 如何处理查询结果集?
A2: 使用mysql_store_result函数获取查询结果集,然后使用mysql_fetch_row函数遍历结果集,对于每一行数据,可以访问相应的列值,处理完所有数据后,使用mysql_free_result释放结果集占用的内存。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/211916.html