2026/2/13 18:32:02
网站建设
项目流程
仙居网站制作,如何建设一个好的企业网站,长沙优化推广外包,小超人成都网站建设核心知识点
实现方式#xff1a;UPDATE 和 DELETE 依然用sqlite3_exec执行#xff0c;语法和命令行完全一致#xff0c;无需回调函数#xff08;因为不返回查询结果#xff09;#xff1b;核心规范#xff1a; 必须在 SQL 语句中加 WHERE 条件#xff0c;避免全表修改…核心知识点实现方式UPDATE 和 DELETE 依然用sqlite3_exec执行语法和命令行完全一致无需回调函数因为不返回查询结果核心规范必须在 SQL 语句中加 WHERE 条件避免全表修改 / 删除嵌入式中误操作会导致设备数据全丢执行后通过返回值SQLITE_OK判断是否成功无需回调对高频修改的参数如温度建议基于param_name或id条件操作保证精准性。完整 C 代码示例创建文件sqlite3_c_demo3.c#includestdio.h#includestdlib.h#includesqlite3.h// 回调函数用于验证UPDATE/DELETE后的结果staticintselect_callback(void*data,intargc,char**argv,char**azColName){printf([%s]\n,(char*)data);for(inti0;iargc;i){// 判空避免空指针printf( %s %s\n,azColName[i],argv[i]?argv[i]:NULL);}printf(\n);return0;}intmain(intargc,char*argv[]){sqlite3*dbNULL;char*err_msgNULL;intretSQLITE_OK;// 1. 打开数据库retsqlite3_open(embedded_db.db,db);if(ret!SQLITE_OK){fprintf(stderr,[ERROR] 打开数据库失败: %s\n,sqlite3_errmsg(db));sqlite3_close(db);return-1;}printf([INFO] 数据库打开成功\n);// 2. 更新数据温度从26.5→27.0模拟传感器新读数constchar*update_sqlUPDATE device_params SET param_value 27.0, update_ts datetime(CURRENT_TIMESTAMP, 8 hours) WHERE param_name temp;;retsqlite3_exec(db,update_sql,NULL,NULL,err_msg);if(ret!SQLITE_OK){fprintf(stderr,[ERROR] 更新温度失败: %s\n,err_msg);sqlite3_free(err_msg);sqlite3_close(db);return-1;}printf([INFO] 温度更新成功26.5→27.0\n);// 3. 验证更新结果constchar*select_temp_sqlSELECT param_name, param_value FROM device_params WHERE param_name temp;;retsqlite3_exec(db,select_temp_sql,select_callback,(void*)更新后的温度参数,err_msg);if(ret!SQLITE_OK){fprintf(stderr,[ERROR] 验证更新结果失败: %s\n,err_msg);sqlite3_free(err_msg);sqlite3_close(db);return-1;}// 4. 删除数据清理湿度数据模拟无效参数清理constchar*delete_sqlDELETE FROM device_params WHERE param_name humidity;;retsqlite3_exec(db,delete_sql,NULL,NULL,err_msg);if(ret!SQLITE_OK){fprintf(stderr,[ERROR] 删除湿度数据失败: %s\n,err_msg);sqlite3_free(err_msg);sqlite3_close(db);return-1;}printf([INFO] 湿度数据删除成功\n);// 5. 验证删除结果查询所有数据确认湿度记录消失constchar*select_all_sqlSELECT * FROM device_params;;retsqlite3_exec(db,select_all_sql,select_callback,(void*)删除后的所有参数,err_msg);if(ret!SQLITE_OK){fprintf(stderr,[ERROR] 验证删除结果失败: %s\n,err_msg);sqlite3_free(err_msg);sqlite3_close(db);return-1;}// 6. 关闭数据库retsqlite3_close(db);if(ret!SQLITE_OK){fprintf(stderr,[ERROR] 关闭数据库失败: %s\n,sqlite3_errmsg(db));return-1;}printf([INFO] 数据库关闭成功\n);return0;}操作步骤编译代码链接 sqlite3 库gcc sqlite3_c_demo3.c -o sqlite3_c_demo3 -lsqlite3运行程序./sqlite3_c_demo3输出如下[INFO]数据库打开成功[INFO]温度更新成功26.5→27.0[更新后的温度参数]param_nametemp param_value27.0[INFO]湿度数据删除成功[删除后的所有参数]id1param_nametemp param_value27.0update_ts2026-01-2713:45:25[INFO]数据库关闭成功验证结果sqlite3 embedded_db.dbSELECT * FROM device_params;输出如下1|temp|27.0|2026-01-2713:45:25