Loading... ```c typedef struct { uint timeout; uint action; // 初始化时设定几次insert后commit uint action_count; // 记录自上次commit以来经过了多少次insert pthread_t commit_thread_tid; pthread_mutex_t commit_thread_lock; } TransactionRecord; typedef struct { sqlite3* db; // sqlite自己的db指针 const char* prefix; // 数据库文件位置, 默认使用./db.db const char* init_path; // 初始化配置文件位置, 默认使用./init.sql int max_record_day; // 按日期分库时每个库最多保留几天的数据 bool auto_init; TransactionRecord* transaction; } DatabaseConfig; typedef struct { int64_t id; uint8_t* EventCode; uint8_t* EventType; uint8_t* EventLevel; uint16_t* DeviceInfo; uint8_t* SysStatus; char* EventTime; } SystemLog; typedef struct { int length; char* table_name; char** columns; uint64_t* offsets; int* types; InsertDataList* data; uint64_t * blob_sizes; } InsertQueryParam; int insert_by_table(DatabaseConfig* config, InsertQueryParam* query_param); int insert_system_log(DatabaseConfig* config, SystemLog* log); ``` 不封装你们要这么调 ```c DatabaseConfig* config = build_default_database_config(); init_database(config); connect_database(config); uint8_t a = 0x1F; uint8_t b = 0xF2; uint8_t c = 0x2F; uint8_t d = 0xF3; SystemLog log1 = { 0, &a, &b }; SystemLog log2 = { 0, &c, &d, }; InsertDataList* data_list = arraylist_create(); arraylist_add(data_list, &log1); arraylist_add(data_list, &log2); InsertQueryParam param = { 2, "system_log", NULL, NULL, NULL, data_list }; char* columns[] = { "EventCode", "EventType" }; uint64_t offsets[] = { OFFSETOF(SystemLog, EventCode), OFFSETOF(SystemLog, EventType) }; int types[] = { DATA_TYPE_BLOB, DATA_TYPE_BLOB }; uint64_t sizes[] = { sizeof(uint8_t), sizeof(uint8_t) }; param.columns = columns; param.offsets = offsets; param.types = types; param.blob_sizes = sizes; int res = insert_by_table(config, ¶m); ``` 封装以后你们这么调 ```c DatabaseConfig* config = build_default_database_config(); init_database(config); connect_database(config); SystemLog log = { ... } insert_system_log(DatabaseConfig* config, &log); ``` 最后修改:2023 年 06 月 25 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏
6 条评论
场景转换稍显突兀,可增加过渡描写。
反驳对手观点时需更注重逻辑严密性。
情感真挚自然,字里行间传递出强烈的感染力。
想想你的文章写的特别好www.jiwenlaw.com
怎么收藏这篇文章?
博主真是太厉害了!!!