当前位置:首页 > 行业动态 > 正文

使用C语言连接MySQL数据库

在C语言中连接MySQL数据库,我们需要使用MySQL提供的C库,即mysqlconnectorc,以下是详细的步骤:

使用C语言连接MySQL数据库  第1张

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;
}
0

随机文章