以下是一个简单的示例代码,展示了使用C语言编写的MySQL网络中间件的服务端和客户端实现增删改查的功能。

服务端代码(server.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>

#define MAX_QUERY_LEN 1024

void execute_query(MYSQL *conn, const char *query) {
    if (mysql_query(conn, query) != 0) {
        fprintf(stderr, "Query execution failed: %s\n", mysql_error(conn));
        exit(1);
    }
}

void handle_query(MYSQL *conn, const char *query) {
    if (strncmp(query, "SELECT", 6) == 0) {
        MYSQL_RES *result;
        MYSQL_ROW row;
        execute_query(conn, query);
        result = mysql_store_result(conn);
        if (result == NULL) {
            fprintf(stderr, "Failed to get result: %s\n", mysql_error(conn));
            exit(1);
        }
        while ((row = mysql_fetch_row(result)) != NULL) {
            for (int i = 0; i < mysql_num_fields(result); i++) {
                printf("%s ", row[i] ? row[i] : "NULL");
            }
            printf("\n");
        }
        mysql_free_result(result);
    } else {
        execute_query(conn, query);
    }
}

int main() {
    MYSQL *conn;
    MYSQL_RES *result;
    MYSQL_ROW row;
    char query[MAX_QUERY_LEN];

    conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "Failed to initialize MySQL connection\n");
        exit(1);
    }
    if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) {
        fprintf(stderr, "Failed to connect to MySQL server: %s\n", mysql_error(conn));
        exit(1);
    }

    printf("Server is running!\n");

    while (1) {
        printf("Enter query: ");
        fgets(query, sizeof(query), stdin);
        query[strcspn(query, "\n")] = '\0';  // Remove trailing newline character

        if (strcmp(query, "exit") == 0) {
            break;
        }

        handle_query(conn, query);
    }

    mysql_close(conn);
    return 0;
}

客户端代码(client.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>

#define MAX_QUERY_LEN 1024

void execute_query(MYSQL *conn, const char *query) {
    if (mysql_query(conn, query) != 0) {
        fprintf(stderr, "Query execution failed: %s\n", mysql_error(conn));
        exit(1);
    }
}

void handle_query(MYSQL *conn, const char *query) {
    if (strncmp(query, "SELECT", 6) == 0) {
        MYSQL_RES *result;
        MYSQL_ROW row;
        execute_query(conn, query);
        result = mysql_store_result(conn);
        if (result == NULL) {
            fprintf(stderr, "Failed to get result: %s\n", mysql_error(conn));
            exit(1);
        }
        while ((row = mysql_fetch_row(result)) != NULL) {
            for (int i = 0; i < mysql_num_fields(result); i++) {
                printf("%s ", row[i] ? row[i] : "NULL");
            }
            printf("\n");
        }
        mysql_free_result(result);
    } else {
        execute_query(conn, query);
    }
}

int main() {
    MYSQL *conn;
    char query[MAX_QUERY_LEN];

    conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "Failed to initialize MySQL connection\n");
        exit(1);
    }
    if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) {
        fprintf(stderr, "Failed to connect to MySQL server: %s\n", mysql_error(conn));
        exit(1);
    }

    printf("Connected to server!\n");

    while (1) {
        printf("Enter query: ");
        fgets(query, sizeof(query), stdin);
        query[strcspn(query, "\n")] = '\0';  // Remove trailing newline character

        if (strcmp(query, "exit") == 0) {
            break;
        }

        handle_query(conn, query);
    }

    mysql_close(conn);
    return 0;
}

请注意,这只是一个简单的示例,并没有进行错误处理和安全检查。在实际使用中,您需要根据具体的需求进行适当的修改和完善。此外,您还需要安装并配置MySQL C Connector来编译以上代码,并根据实际情况填写相应的数据库连接信息。

C语言实现MySQL网络中间件:增删改查示例代码

原文地址: http://www.cveoy.top/t/topic/qzIr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录