当先锋百科网

首页 1 2 3 4 5 6 7

JSON是一种轻量级的数据交换格式,而SQLite是一种轻量级的关系型数据库管理系统。在开发过程中,我们通常需要将JSON数据存储到SQLite数据库中。这篇文章将向大家介绍如何使用C语言将JSON数据转换为SQLite数据。

在开始编写代码前,首先需要安装sqlite3和cJSON库。安装方法请自行查找相关教程。

#include#include#includeint main()
{
sqlite3* db;
char* errMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);     // 打开数据库
if(rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 0;
}
rc = sqlite3_exec(db, "create table if not exists test(id integer primary key, name text, age integer)", NULL, NULL, &errMsg);   //创建表
if(rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
sqlite3_close(db);
return 0;
}
cJSON* root;
char* json = "{\"id\":1,\"name\":\"Alice\",\"age\":20}";
root = cJSON_Parse(json);       // 解析JSON数据
if(!root) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
sqlite3_close(db);
return 0;
}
cJSON* id = cJSON_GetObjectItemCaseSensitive(root, "id");
cJSON* name = cJSON_GetObjectItemCaseSensitive(root, "name");
cJSON* age = cJSON_GetObjectItemCaseSensitive(root, "age");
char sql[128];
sprintf(sql, "insert into test values(%d, \"%s\", %d)", id->valueint, name->valuestring, age->valueint);       // 构建插入SQL语句
rc = sqlite3_exec(db, sql, NULL, NULL, &errMsg);
if(rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
sqlite3_close(db);
return 0;
}
sqlite3_close(db);      // 关闭数据库
return 0;
}

代码中,我们使用sqlite3库和cJSON库,打开数据库并创建一个名为test的表。接着,我们解析JSON数据,获取其中的id、name和age字段,并利用sprintf函数构建插入SQL语句。最后,执行插入操作并关闭数据库。

使用上述代码,我们可以将一个包含id、name和age字段的JSON数据存储到SQLite数据库中。