在C ++編程中,操作JSON格式的數據已經成為了一種常見的需求。同時,在與數據庫打交道時,將數據庫中的數據以JSON格式輸出也變得非常重要。因此,本文將介紹如何使用C ++與數據庫交互,以及將查詢結果以JSON格式拼接輸出。
首先,我們需要使用C ++的數據庫訪問API連接到MySQL、SQLite等常見的關系型數據庫。這里以MySQL為例,示例代碼如下:
#include <mysql.h> MYSQL conn; mysql_init(&conn); mysql_real_connect(&conn, "localhost", "username", "password", "database", 3306, NULL, 0);
完成連接后,我們需要執行一些SQL查詢語句,獲取數據庫中的數據。例如:
string query = "SELECT * FROM users WHERE id = 1"; MYSQL_RES *res; MYSQL_ROW row; mysql_query(&conn, query.c_str()); res = mysql_store_result(&conn); row = mysql_fetch_row(res);
得到查詢結果后,我們需要將其拼接成JSON格式的數據。這里我使用了C ++中常見的json庫rapidJSON。首先創建一個JSON對象:
#include <rapidjson/document.h> #include <rapidjson/writer.h> #include <rapidjson/stringbuffer.h> using namespace rapidjson; Document doc; doc.SetObject();
假設查詢返回的字段名為id、name和age,我們可以將查詢結果拼接成如下格式的JSON:
{ "id": 1, "name": "Tom", "age": 18 }
代碼實現如下:
Value obj(kObjectType); obj.AddMember("id", atoi(row[0]), doc.GetAllocator()); obj.AddMember("name", StringRef(row[1]), doc.GetAllocator()); obj.AddMember("age", atoi(row[2]), doc.GetAllocator());
最后,我們將拼接好的JSON格式數據輸出:
StringBuffer buffer; Writerwriter(buffer); obj.Accept(writer); cout<< buffer.GetString()<< endl; //輸出:{"id":1,"name":"Tom","age":18}
本文介紹了如何使用C ++與數據庫進行交互,并將查詢結果以JSON格式輸出。這個過程需要熟練掌握C ++的數據庫訪問API以及rapidJSON庫的使用。希望對大家有所幫助。
上一篇c+字典轉json字符串
下一篇cvs和json的區別