在C語言中查詢數(shù)據(jù)庫并返回JSON是很常見的任務(wù)。本文將介紹如何實(shí)現(xiàn)這一任務(wù)。
首先,我們需要連接到數(shù)據(jù)庫。對(duì)于不同的數(shù)據(jù)庫,連接方式可能會(huì)有所不同。以下是一個(gè)MySQL數(shù)據(jù)庫的連接示例:
MYSQL *conn = mysql_init(NULL); if (!mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0)) { printf("Error: %s\n", mysql_error(conn)); mysql_close(conn); return NULL; }
一旦連接到數(shù)據(jù)庫,我們就可以執(zhí)行SQL查詢,并將結(jié)果轉(zhuǎn)換為JSON。以下是一個(gè)基本的例子:
MYSQL_RES *result = mysql_store_result(conn); MYSQL_ROW row; int num_fields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { json_object *obj = json_object_new_object(); for (int i = 0; i< num_fields; i++) { json_object_object_add(obj, mysql_field_name(result, i), json_object_new_string(row[i])); } json_array_add(array, obj); } mysql_free_result(result); mysql_close(conn); return json_object_to_json_string(array);
在上面的代碼中,我們使用了一個(gè)json-c庫來構(gòu)造JSON對(duì)象和數(shù)組。使用json-c庫非常簡單,只需要在代碼中包含頭文件,并調(diào)用相應(yīng)的函數(shù)即可。在上面的例子中,我們首先將查詢結(jié)果存儲(chǔ)在MYSQL_RES對(duì)象中,然后遍歷結(jié)果集中的每一行。對(duì)于每一行,我們都創(chuàng)建一個(gè)JSON對(duì)象,并為每個(gè)字段添加一個(gè)鍵值對(duì)。
最后,我們將JSON數(shù)組轉(zhuǎn)換為字符串并返回它。這個(gè)字符串可以直接發(fā)送到客戶端或保存在文件中。