C语言实现MySQL网络中间件:增删改查示例代码
以下是一个简单的示例代码,展示了使用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来编译以上代码,并根据实际情况填写相应的数据库连接信息。
原文地址: http://www.cveoy.top/t/topic/qzIr 著作权归作者所有。请勿转载和采集!