使用C语言连接MySQL数据库
- 行业动态
- 2024-04-23
- 4381
在C语言中连接MySQL数据库,我们需要使用MySQL提供的C库,即mysqlconnectorc,以下是详细的步骤:
1、下载并安装mysqlconnectorc库
我们需要下载并安装mysqlconnectorc库,你可以从MySQL官方网站下载:https://dev.mysql.com/downloads/connector/c/
2、包含头文件
在C程序中,我们需要包含mysqlconnectorc库的头文件,通常,我们会将以下代码添加到C程序的开头:
#include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h>
3、初始化MySQL连接
在使用mysqlconnectorc库之前,我们需要初始化一个MySQL连接,这可以通过调用mysql_init()函数来完成。
MYSQL *conn; conn = mysql_init(NULL); if (conn == NULL) { fprintf(stderr, "%s ", mysql_error(conn)); exit(1); }
4、连接到MySQL服务器
接下来,我们需要连接到MySQL服务器,这可以通过调用mysql_real_connect()函数来完成。
const char *server = "localhost"; const char *user = "username"; const char *password = "password"; const char *database = "test"; if (mysql_real_connect(conn, server, user, password, database, 0, NULL, 0) == NULL) { fprintf(stderr, "%s ", mysql_error(conn)); mysql_close(conn); exit(1); }
5、执行SQL查询
现在我们已经连接到MySQL服务器,可以执行SQL查询了,这可以通过调用mysql_query()函数来完成。
const char *sql = "SELECT * FROM table_name"; if (mysql_query(conn, sql)) { fprintf(stderr, "%s ", mysql_error(conn)); mysql_close(conn); exit(1); }
6、处理查询结果
如果查询成功,我们可以处理查询结果,这可以通过调用mysql_store_result()和mysql_fetch_row()函数来完成。
MYSQL_RES *result = mysql_store_result(conn); 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(" "); }
7、释放资源并关闭连接
我们需要释放资源并关闭连接,这可以通过调用mysql_free_result()和mysql_close()函数来完成。
mysql_free_result(result); mysql_close(conn);
将以上代码整合到一起,我们可以得到一个完整的C程序,用于连接MySQL数据库并执行查询:
#include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h> int main() { MYSQL *conn; conn = mysql_init(NULL); if (conn == NULL) { fprintf(stderr, "%s ", mysql_error(conn)); exit(1); } const char *server = "localhost"; const char *user = "username"; const char *password = "password"; const char *database = "test"; if (mysql_real_connect(conn, server, user, password, database, 0, NULL, 0) == NULL) { fprintf(stderr, "%s ", mysql_error(conn)); mysql_close(conn); exit(1); } const char *sql = "SELECT * FROM table_name"; if (mysql_query(conn, sql)) { fprintf(stderr, "%s ", mysql_error(conn)); mysql_close(conn); exit(1); } MYSQL_RES *result = mysql_store_result(conn); 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(" "); } mysql_free_result(result); mysql_close(conn); return 0; }
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/232336.html