在C開發(fā)中,讀取數(shù)據(jù)庫并將結(jié)果生成為json數(shù)據(jù)是非常常見的需求。下面將介紹如何使用C語言讀取數(shù)據(jù)庫,并將結(jié)果生成為json格式。
首先需要在C語言中連接數(shù)據(jù)庫,這需要使用到第三方庫。我們這里使用libmysqlclient庫來連接mysql數(shù)據(jù)庫。連接數(shù)據(jù)庫的方法如下:
MYSQL* connection = mysql_init(NULL); mysql_real_connect(connection, "localhost", "username", "password", "database", 0, NULL, 0);
連接成功后,就可以使用mysql_query()函數(shù)來執(zhí)行sql語句并獲取結(jié)果集了。執(zhí)行sql語句的代碼如下:
MYSQL_RES* result; MYSQL_ROW row; mysql_query(connection, "SELECT * FROM mytable"); result = mysql_store_result(connection);
執(zhí)行成功后,可以使用mysql_fetch_row()函數(shù)來獲取每一行結(jié)果。下面是將結(jié)果生成為json數(shù)據(jù)的代碼:
int num_fields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { json_object* jobj = json_object_new_object(); for (int i = 0; i< num_fields; i++) { json_object* val = json_object_new_string(row[i] ? row[i] : "NULL"); json_object_object_add(jobj, mysql_fetch_field_direct(result, i)->name, val); } printf("%s", json_object_to_json_string(jobj)); json_object_put(jobj); }
在這段代碼中,我們使用了第三方庫json-c來生成json格式數(shù)據(jù)。我們首先新建了一個空的json對象,然后依次將每一列的值添加到j(luò)son對象中,并將json對象轉(zhuǎn)化為字符串輸出。最后釋放json對象。
綜上所述,使用C語言讀取數(shù)據(jù)庫并生成json數(shù)據(jù)的過程相對簡單,但需要使用到第三方庫來輔助實現(xiàn),通過使用第三方庫我們可以更加高效和方便地實現(xiàn)各種操作。
下一篇c 讀取本地json