在C語(yǔ)言開(kāi)發(fā)中,有時(shí)我們需要將存儲(chǔ)在JSON文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中。這一過(guò)程需要使用到一些C語(yǔ)言的庫(kù)函數(shù),包括CJSON和MySQL C API等。下面我們來(lái)看一下如何實(shí)現(xiàn)這一過(guò)程。
首先,我們需要使用CJSON庫(kù)來(lái)讀取JSON文件中的數(shù)據(jù)??梢允褂靡韵麓a:
#include "cJSON.h" #include <stdio.h> void parseJson(char *jsonStr){ cJSON *json = cJSON_Parse(jsonStr); cJSON *item = cJSON_GetObjectItem(json, "key"); char *value = cJSON_Print(item); cJSON_Delete(json); free(value); }
此代碼用來(lái)解析JSON文件,并返回其中“key”所對(duì)應(yīng)的值。我們將其保存在變量value中。
然后,我們需要使用MySQL C API來(lái)連接數(shù)據(jù)庫(kù)、插入數(shù)據(jù)。可以使用以下代碼:
#include <mysql.h> const char *server = "localhost"; const char *user = "user"; const char *password = "password"; const char *database = "database"; int main(){ MYSQL *connection; MYSQL_RES *result; MYSQL_ROW row; connection = mysql_init(NULL); if (!mysql_real_connect(connection, server, user, password, database, 0, NULL, 0)){ printf("Connection to database failed!\n"); return 1; } char *query = "INSERT INTO table (field) VALUES ('value')"; if (mysql_query(connection, query)){ printf("Query to database failed!\n"); return 1; } mysql_close(connection); return 0; }
此代碼建立了與數(shù)據(jù)庫(kù)的連接,并插入了一條數(shù)據(jù)。我們需要將value變量的值作為INSERT語(yǔ)句中的一個(gè)參數(shù)。
最后,我們需要將以上兩個(gè)過(guò)程結(jié)合起來(lái)??梢允褂靡韵麓a:
#include <stdio.h> #include <mysql.h> #include "cJSON.h" const char *server = "localhost"; const char *user = "user"; const char *password = "password"; const char *database = "database"; void parseJson(char *jsonStr, MYSQL *connection){ cJSON *json = cJSON_Parse(jsonStr); cJSON *item = cJSON_GetObjectItem(json, "key"); char *value = cJSON_Print(item); char query[100]; sprintf(query, "INSERT INTO table (field) VALUES ('%s')", value); if (mysql_query(connection, query)){ printf("Query to database failed!\n"); return; } cJSON_Delete(json); free(value); } int main(){ MYSQL *connection = mysql_init(NULL); if (!mysql_real_connect(connection, server, user, password, database, 0, NULL, 0)){ printf("Connection to database failed!\n"); return 1; } char *jsonStr = "{\"key\":\"value\"}"; parseJson(jsonStr, connection); mysql_close(connection); return 0; }
此代碼中,我們將以上兩個(gè)過(guò)程組合到了一起,并實(shí)現(xiàn)了將JSON文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中的完整過(guò)程。