C語言是一門非常底層的編程語言,但是它在與數(shù)據(jù)庫進行交互時表現(xiàn)非常優(yōu)秀。而JSON是一種輕量級的數(shù)據(jù)交換格式,被廣泛應用于網(wǎng)絡編程中的數(shù)據(jù)傳輸。
這里介紹一種將JSON文件存儲到數(shù)據(jù)庫中的方法,使用C語言進行實現(xiàn)。
首先需要安裝sqlite3數(shù)據(jù)庫,然后在代碼中引用sqlite3.h頭文件,即可使用sqlite3的相關(guān)函數(shù)。
#include <stdio.h> #include <sqlite3.h> #include <string.h> int main(){ sqlite3 *db = NULL; char *errmsg = NULL; int rc; const char *sql = "create table if not exists JSON_TABLE(JSON text);"; char *json_string = "{\"name\":\"Tom\",\"age\":\"25\"}"; rc = sqlite3_open(":memory:", &db); if(rc != SQLITE_OK){ printf("can't open database: %s\n", sqlite3_errmsg(db)); return rc; } rc = sqlite3_exec(db, sql, NULL, NULL, &errmsg); if(rc != SQLITE_OK){ printf("SQL error: %s\n", errmsg); sqlite3_free(errmsg); return rc; } sqlite3_stmt *stmt = NULL; const char *json_query = "insert into JSON_TABLE values(?);"; rc = sqlite3_prepare_v2(db, json_query, strlen(json_query), &stmt, NULL); if(rc != SQLITE_OK){ printf("prepare error: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return rc; } rc = sqlite3_bind_text(stmt, 1, json_string, strlen(json_string), SQLITE_STATIC); if(rc != SQLITE_OK){ printf("bind text error: %s\n", sqlite3_errmsg(db)); sqlite3_finalize(stmt); sqlite3_close(db); return rc; } rc = sqlite3_step(stmt); if(rc != SQLITE_DONE){ printf("step error: %s\n", sqlite3_errmsg(db)); sqlite3_finalize(stmt); sqlite3_close(db); return rc; } sqlite3_finalize(stmt); sqlite3_close(db); printf("JSON string has been inserted into database.\n"); return 0; }
上述代碼將一個JSON字符串插入到數(shù)據(jù)庫中,可以根據(jù)自己的需求進行修改。
通過這種方法,我們可以在C語言中方便地存儲JSON數(shù)據(jù),并且使用SQL查詢語句進行查詢、修改等操作。