C語言作為一門歷史悠久,應(yīng)用廣泛的編程語言,其可以做到前后端的完美銜接。在實(shí)際開發(fā)中,我們經(jīng)常會(huì)使用數(shù)據(jù)庫存儲一些數(shù)據(jù)。如何從數(shù)據(jù)庫中讀取數(shù)據(jù),并將數(shù)據(jù)以JSON格式返回給前端,是一個(gè)非常重要的功能。
首先,需要使用C語言連接數(shù)據(jù)庫。以MySQL數(shù)據(jù)庫為例,可以使用MySQL Connector C API來連接MySQL數(shù)據(jù)庫,具體實(shí)現(xiàn)方法如下所示。
MYSQL conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = ""; char *database = "mydatabase"; int port = 3306; mysql_init(&conn); if (!mysql_real_connect(&conn, server, user, password, database, port, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(&conn)); exit(1); }
連接數(shù)據(jù)庫后,需要執(zhí)行查詢語句獲取數(shù)據(jù)。查詢結(jié)果需要逐行讀取,并將每個(gè)字段的值轉(zhuǎn)換為JSON格式的字符串,最后將JSON字符串返回給前端。下面是一個(gè)示例代碼。
char* query = "SELECT * FROM mytable"; mysql_query(&conn, query); res = mysql_store_result(&conn); int num_fields = mysql_num_fields(res); while ((row = mysql_fetch_row(res))) { cJSON *root = cJSON_CreateObject(); for(int i = 0; i< num_fields; i++) { cJSON_AddStringToObject(root, mysql_fetch_field_direct(res, i)->name, row[i] ? row[i] : ""); } char *json_str = cJSON_Print(root); printf("%s\n", json_str); free(json_str); cJSON_Delete(root); }
以上代碼將從名為mydatabase的數(shù)據(jù)庫中的名為mytable的表中讀取所有數(shù)據(jù),并將每行數(shù)據(jù)以JSON格式的字符串的形式輸出到控制臺。為了更好地展示數(shù)據(jù),我們可以將JSON字符串加上合適的格式化,并將其返回給前端。
本文介紹了從MySQL數(shù)據(jù)庫中讀取數(shù)據(jù)并以JSON格式返回的方法。當(dāng)然,其他類型的數(shù)據(jù)庫也有類似的方法。讀者可以根據(jù)具體的需求進(jìn)行選擇。