在程序員日常開發中,我們常常需要將JSON數據存儲到數據庫中,本文將會介紹如何使用C語言將JSON數據插入到數據庫中。
首先,在使用C實現JSON數據插入到數據庫前,我們需要安裝CJSON庫,該庫可以提供我們操作JSON的接口。
// JSON數據 const char *json_data = "{\\\"name\\\": \\\"Tom\\\", \\\"age\\\": 18}"; // 聲明JSON對象指針 cJSON *json_obj = cJSON_Parse(json_data); if (!json_obj) { printf("JSON解析失敗\n"); return 0; } // 獲取JSON中的屬性 char *name = cJSON_GetObjectItem(json_obj, "name")->valuestring; int age = cJSON_GetObjectItem(json_obj, "age")->valueint;
以上是如何操作JSON數據,接下來就是如何將JSON數據插入到數據庫中,方法主要分為兩種:手寫SQL語句和用ORM框架。
下面我們先介紹手寫SQL語句的方法。假設我們有一個users表,該表有name和age兩列,接下來我們需要將JSON插入到該表中。
// 假設我們的數據庫連接變量為conn char *sql = "INSERT INTO users (name, age) VALUES (?, ?)"; MYSQL_STMT *stmt = mysql_stmt_init(conn); if (stmt == NULL) { printf("stmt初始化失敗\n"); return 0; } // 預處理SQL語句 mysql_stmt_prepare(stmt, sql, strlen(sql)); MYSQL_BIND input_bind[2]; memset(input_bind, 0, sizeof(input_bind)); // 表示第一個參數采用字符串類型,第二個參數是字符串變量的地址,第三個參數是字符串變量的長度 input_bind[0].buffer_type = MYSQL_TYPE_STRING; input_bind[0].buffer = name; input_bind[0].buffer_length = strlen(name); input_bind[0].is_null = 0; // 表示第二個參數采用整型類型,第二個參數是整型變量的地址,第三個參數沒有用,可以設置為0 input_bind[1].buffer_type = MYSQL_TYPE_LONG; input_bind[1].buffer = &age; input_bind[1].is_null = 0; input_bind[1].length = 0; mysql_stmt_bind_param(stmt, input_bind); if (mysql_stmt_execute(stmt)) { printf("SQL執行失敗\n"); return 0; } printf("插入成功!\n");
以上就是手寫SQL語句方式將JSON數據插入到數據庫的代碼。