在使用C語言連接MySQL服務器之前,需要先確保已經安裝了MySQL Connector/C,該庫提供了訪問MySQL數據庫的API接口。
// 引入MySQL Connector/C庫 #include <mysql.h> // 配置連接信息 MYSQL *con = mysql_init(NULL); if (con == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); exit(1); } const char* host = "localhost"; const char* user = "root"; const char* password = "password"; const char* database = "test"; // 連接MySQL if (mysql_real_connect(con, host, user, password, database, 0, NULL, 0) == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); }
在實際應用中,通常會將連接信息配置在一個配置文件中,這樣可以方便地修改和管理,例如:
[mysql] host=localhost user=root password=password database=test
我們可以使用開源的inih來解析配置文件。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <mysql.h> #include <../inih/ini.h> // 配置結構體 typedef struct { const char* host; const char* user; const char* password; const char* database; } Config; // 解析配置文件 static int handler(void* user, const char* section, const char* name, const char* value) { Config* config = (Config*)user; if (strcmp(section, "mysql") == 0) { if (strcmp(name, "host") == 0) { config->host = strdup(value); } else if (strcmp(name, "user") == 0) { config->user = strdup(value); } else if (strcmp(name, "password") == 0) { config->password = strdup(value); } else if (strcmp(name, "database") == 0) { config->database = strdup(value); } else { return 0; } } else { return 0; } return 1; } int main(int argc, char const* argv[]) { Config config = {NULL, NULL, NULL, NULL}; if (ini_parse("../config.ini", handler, &config)< 0) { printf("Error: Can't load config file.\n"); exit(1); } MYSQL* con = mysql_init(NULL); if (con == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); exit(1); } if (mysql_real_connect(con, config.host, config.user, config.password, config.database, 0, NULL, 0) == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } mysql_close(con); return 0; }
使用C語言連接MySQL服務器就是這么簡單。如果需要進行數據庫操作,可以使用MySQL Connector/C提供的API接口。