最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言讀取data.json文件并存入MySQL數(shù)據(jù)庫小案例(推薦)

 更新時間:2024年10月12日 09:49:02   作者:etsuyou  
本文介紹如何使用C語言結(jié)合cJSON庫讀取JSON文件,并將數(shù)據(jù)存儲到MySQL數(shù)據(jù)庫中,示例代碼包括創(chuàng)建MySQL表的SQL語句和C語言代碼,以及如何編譯和運(yùn)行程序,確保已安裝必要的庫以支持程序運(yùn)行

本地有一個data.json文件

data.json

[
    {
        "id": 1,
        "name": "Alice",
        "age": 30
    },
    {
        "id": 2,
        "name": "Bob",
        "age": 25
    }
]

要將 data.json 文件中的數(shù)據(jù)存儲到 MySQL 數(shù)據(jù)庫中,首先需要創(chuàng)建一個相應(yīng)的數(shù)據(jù)庫表。然后,你可以使用 C 語言和 cJSON 庫來讀取 JSON 文件并將數(shù)據(jù)插入到數(shù)據(jù)庫中。

1. 創(chuàng)建 MySQL 表

首先,在 MySQL 中創(chuàng)建一個表來存儲數(shù)據(jù)??梢允褂靡韵?SQL 語句:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

2. C 語言代碼示例

以下是一個完整的 C 語言示例,使用 cJSON 庫讀取 data.json 文件并將數(shù)據(jù)插入到 MySQL 數(shù)據(jù)庫中。

依賴項

確保你已經(jīng)安裝了以下庫:

  • MySQL C API
  • cJSON

代碼示例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#include "cJSON.h"
// MySQL 配置
#define DB_HOST "xxx.xxx.xxx.xxx"
#define DB_USER "root"
#define DB_PASSWORD "xxxxxx"
#define DB_NAME "xxxxx"
void insert_user(MYSQL *conn, int id, const char *name, int age) {
    char query[256];
    snprintf(query, sizeof(query), "INSERT INTO users (id, name, age) VALUES (%d, '%s', %d)", id, name, age);
    if (mysql_query(conn, query)) {
        fprintf(stderr, "INSERT failed: %s\n", mysql_error(conn));
    }
}
int main() {
    // MySQL 連接
    MYSQL *conn;
    conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "mysql_init() failed\n");
        return EXIT_FAILURE;
    }
    if (mysql_real_connect(conn, DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, 0, NULL, 0) == NULL) {
        fprintf(stderr, "mysql_real_connect() failed\n");
        mysql_close(conn);
        return EXIT_FAILURE;
    }
    // 讀取 JSON 文件
    FILE *file = fopen("data.json", "r");
    if (!file) {
        perror("Could not open file");
        mysql_close(conn);
        return EXIT_FAILURE;
    }
    fseek(file, 0, SEEK_END);
    long length = ftell(file);
    fseek(file, 0, SEEK_SET);
    char *data = malloc(length);
    fread(data, 1, length, file);
    fclose(file);
    // 解析 JSON
    cJSON *json = cJSON_Parse(data);
    if (json == NULL) {
        fprintf(stderr, "cJSON_Parse failed\n");
        free(data);
        mysql_close(conn);
        return EXIT_FAILURE;
    }
    // 遍歷 JSON 數(shù)組并插入數(shù)據(jù)
    cJSON *user;
    cJSON_ArrayForEach(user, json) {
        int id = cJSON_GetObjectItem(user, "id")->valueint;
        const char *name = cJSON_GetObjectItem(user, "name")->valuestring;
        int age = cJSON_GetObjectItem(user, "age")->valueint;
        insert_user(conn, id, name, age);
    }
    // 清理
    cJSON_Delete(json);
    free(data);
    mysql_close(conn);
    return EXIT_SUCCESS;
}

3. 編譯和運(yùn)行

新建一個makefile文件:

# 定義變量
CC = gcc
CFLAGS = -Wall -g
LIBS = -lm -lmysqlclient  # 添加 MySQL 客戶端庫
TARGET = json_to_mysql
SRC = main.c cJSON.c
OBJ = $(SRC:.c=.o)
# 默認(rèn)目標(biāo)
all: $(TARGET)
# 構(gòu)建目標(biāo)
$(TARGET): $(OBJ)
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
# 編譯 .c 文件為 .o 文件
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@
# 清理目標(biāo)
clean:
	rm -f $(TARGET) $(OBJ)
# 偽目標(biāo)
.PHONY: all clean

輸入make編譯:

運(yùn)行

到此這篇關(guān)于C語言讀取data.json文件并存入MySQL數(shù)據(jù)庫小案例的文章就介紹到這了,更多相關(guān)C語言讀取data.json文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows下vscode使用cmake的方法

    windows下vscode使用cmake的方法

    這篇文章主要介紹了windows下vscode使用cmake的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C C++算法題解LeetCode1408數(shù)組中的字符串匹配

    C C++算法題解LeetCode1408數(shù)組中的字符串匹配

    這篇文章主要為大家介紹了C C++算法題解LeetCode1408數(shù)組中的字符串匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 在C++中使用HP-Socket

    在C++中使用HP-Socket

    這篇文章主要介紹了C++中簡單使用HP-Socket,HP-Socket 是一套通用的高性能 TCP/UDP /HTTP 通信 框架 ,包含服務(wù)端組件、客戶端組件和 Agent 組件,廣泛適用于各種不同應(yīng)用場景的 TCP/UDP /HTTP 通信系統(tǒng),下面來看看更具體的介紹吧
    2021-11-11
  • C++深入分析STL中map容器的使用

    C++深入分析STL中map容器的使用

    map在編程中是經(jīng)常使用的一個容器,本文來講解一下STL中的map,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++中的代理模式實現(xiàn)代碼

    C++中的代理模式實現(xiàn)代碼

    本文介紹了C++中的STL算法,分為非修改序列算法和修改序列算法兩大類,涵蓋了如find、count、equal、mismatch、all_of、any_of、none_of等非修改序列算法,還介紹了排序算法、堆算法、最小/最大值算法、數(shù)值算法等,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 深入理解strcpy與memcpy的區(qū)別

    深入理解strcpy與memcpy的區(qū)別

    本篇文章是對strcpy與memcpy的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實現(xiàn)景區(qū)旅游信息管理系統(tǒng)

    C++實現(xiàn)景區(qū)旅游信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)景區(qū)旅游信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解C++中移動語義的概念與使用

    詳解C++中移動語義的概念與使用

    本篇文章主要為大家詳細(xì)介紹了C++中移動語義的相關(guān)知識,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2023-06-06
  • 解決scanf_s輸入%d%c%d格式錯誤的問題

    解決scanf_s輸入%d%c%d格式錯誤的問題

    這篇文章主要介紹了解決scanf_s輸入%d%c%d格式錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動補(bǔ)全、懸停提示功能

    VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動補(bǔ)全、懸停提示功能

    這篇文章主要介紹了VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動補(bǔ)全、懸停提示,需要的朋友可以參考下
    2020-05-05

最新評論

揭东县| 正定县| 沁水县| 新龙县| 弥勒县| 贵德县| 崇义县| 哈尔滨市| 修武县| 周口市| 东阿县| 兴和县| 巴里| 梁平县| 韶山市| 方山县| 平武县| 敦化市| 芒康县| 重庆市| 诏安县| 乌鲁木齐市| 湄潭县| 体育| 潮州市| 正定县| 茌平县| 石泉县| 霞浦县| 昆明市| 西丰县| 新兴县| 马尔康县| 法库县| 东辽县| 梅州市| 汕头市| 德保县| 百色市| 平塘县| 纳雍县|