C語言是一種強(qiáng)類型靜態(tài)編程語言,深受廣大程序員的喜愛。通過C語言,我們能夠高效地操作數(shù)據(jù)、控制計(jì)算機(jī)硬件等。而為了更好地管理數(shù)據(jù),我們經(jīng)常需要讀取數(shù)據(jù)庫中的數(shù)據(jù)。下面,我們將介紹如何使用C語言來讀取數(shù)據(jù)庫,并將讀取的數(shù)據(jù)轉(zhuǎn)換為JSON格式。
// 利用C語言讀取數(shù)據(jù)庫
// 打開數(shù)據(jù)庫
sqlite3* db;
int rc = sqlite3_open("example.db", &db);
if (rc != SQLITE_OK) {
// 打開失敗
}
// 讀取數(shù)據(jù)
sqlite3_stmt* stmt;
rc = sqlite3_prepare_v2(db, "SELECT * FROM users", -1, &stmt, NULL);
if (rc != SQLITE_OK) {
// 準(zhǔn)備查詢語句失敗
}
// 將數(shù)據(jù)轉(zhuǎn)換為JSON格式
json_t* json = json_object();
int columnCount = sqlite3_column_count(stmt);
while (sqlite3_step(stmt) == SQLITE_ROW) {
json_t* row = json_object();
for (int i = 0; i< columnCount; i++) {
const char* colName = sqlite3_column_name(stmt, i);
switch (sqlite3_column_type(stmt, i)) {
case SQLITE_INTEGER:
json_object_set_new(row, colName, json_integer(sqlite3_column_int(stmt, i)));
break;
case SQLITE_FLOAT:
json_object_set_new(row, colName, json_real(sqlite3_column_double(stmt, i)));
break;
case SQLITE_TEXT:
json_object_set_new(row, colName, json_string((const char*)sqlite3_column_text(stmt, i)));
break;
}
}
json_array_append_new(json, row);
}
// 關(guān)閉數(shù)據(jù)庫
sqlite3_finalize(stmt);
sqlite3_close(db);
// 輸出JSON字符串
char* json_str = json_dumps(json, JSON_INDENT(2));
// 釋放內(nèi)存
json_decref(json);
上述代碼示例了如何使用C語言讀取數(shù)據(jù)庫,并將讀取的數(shù)據(jù)轉(zhuǎn)換成了JSON格式,這樣我們就可以通過HTTP請求將這些數(shù)據(jù)發(fā)送給客戶端了。