色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json轉sqlite

錢琪琛1年前7瀏覽0評論

JSON是一種輕量級的數據交換格式,而SQLite是一種輕量級的關系型數據庫管理系統。在開發過程中,我們通常需要將JSON數據存儲到SQLite數據庫中。這篇文章將向大家介紹如何使用C語言將JSON數據轉換為SQLite數據。

在開始編寫代碼前,首先需要安裝sqlite3和cJSON庫。安裝方法請自行查找相關教程。

#include#include#includeint main()
{
sqlite3* db;
char* errMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);     // 打開數據庫
if(rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 0;
}
rc = sqlite3_exec(db, "create table if not exists test(id integer primary key, name text, age integer)", NULL, NULL, &errMsg);   //創建表
if(rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
sqlite3_close(db);
return 0;
}
cJSON* root;
char* json = "{\"id\":1,\"name\":\"Alice\",\"age\":20}";
root = cJSON_Parse(json);       // 解析JSON數據
if(!root) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
sqlite3_close(db);
return 0;
}
cJSON* id = cJSON_GetObjectItemCaseSensitive(root, "id");
cJSON* name = cJSON_GetObjectItemCaseSensitive(root, "name");
cJSON* age = cJSON_GetObjectItemCaseSensitive(root, "age");
char sql[128];
sprintf(sql, "insert into test values(%d, \"%s\", %d)", id->valueint, name->valuestring, age->valueint);       // 構建插入SQL語句
rc = sqlite3_exec(db, sql, NULL, NULL, &errMsg);
if(rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
sqlite3_close(db);
return 0;
}
sqlite3_close(db);      // 關閉數據庫
return 0;
}

代碼中,我們使用sqlite3庫和cJSON庫,打開數據庫并創建一個名為test的表。接著,我們解析JSON數據,獲取其中的id、name和age字段,并利用sprintf函數構建插入SQL語句。最后,執行插入操作并關閉數據庫。

使用上述代碼,我們可以將一個包含id、name和age字段的JSON數據存儲到SQLite數據庫中。