SQLite3学习笔记6:UPDATE(改)+ DELETE(删)数据(C API) 📅 发布时间:2026/7/4 16:14:04 👁️ 浏览次数: 核心知识点实现方式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
HoRain云--SpringCache与Redis高效整合指南 🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 … 2026/7/5 9:56:08
【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现 项目介绍本课程演示的是一款基于Python爬虫二手房价格预测与可视化系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。包含:项目源码、项目文档、数据库脚本、软件工具等所有资料带你从零开始部署运行本套系统该项目附带… 2026/7/3 4:19:17
【含文档+PPT+源码】基于微信小程序的旅游论坛系统的设计与实现 项目介绍 本课程演示的是一款基于微信小程序的旅游论坛系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统… 2026/5/17 0:43:17
本地运行的ESP8266双控智能家居套件:灯光调光+锅炉温控+人体感应联动 本文还有配套的精品资源,点击获取 简介:一套无需云服务、纯本地部署的PythonESP8266双控智能家居方案,支持灯光开关与PWM调光、锅炉启停及目标温度设定、人体红外自动触发、环境温湿度实时监测。ESP端提供4个独立Arduino源码(l… 2026/7/5 9:48:43
Unity实时水墨晕染工具:基于LBM流体模型的GPU加速墨迹扩散Shader 本文还有配套的精品资源,点击获取 简介:一套开箱即用的Unity水墨风格渲染解决方案,核心用格子玻尔兹曼方法(LBM)在GPU端模拟墨水在宣纸上的自然扩散、流动与混合过程。着色器逻辑集中在d2q9model.hlsl文件ÿ… 2026/7/5 9:48:43
解锁Codex全部潜力:10个必装Skills实战指南,从通用助手到超级副驾 🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你刚接触 Codex,可能会觉得它已经很强大了——能写代码、能调试、能重构,甚至能帮你分析复杂的技术问题。… 2026/7/5 9:46:43
pytest-dependency依赖管理实战:解决作用域、并行执行与动态依赖难题 1. 项目概述与核心价值 在自动化测试的世界里,测试用例之间的依赖关系一直是个让人又爱又恨的话题。爱它,是因为它能模拟真实的业务流程,让测试更贴近实际;恨它,是因为它常常让测试套件变得脆弱不堪——一个前置用例失… 2026/7/5 9:46:43
AI驱动Playwright自动化测试:5个实战技巧解放React组件测试 1. 项目概述:当AI遇上Playwright,React组件测试的“手”可以解放了 作为一名在自动化测试领域摸爬滚打了十多年的老兵,我亲眼见证了从Selenium的“刀耕火种”到Cypress、Playwright等现代框架的“精耕细作”。但有一个痛点始终如影随形&#… 2026/7/5 9:44:42
STM32F103C8T6串口Ymodem在线升级包:含可运行Bootloader、APP示例、自动识别上位机与全流程文档 本文还有配套的精品资源,点击获取 简介:一套实测可用的STM32F103C8T6串口固件远程升级方案,基于Ymodem协议实现IAP功能。包含已配置好Flash分区和向量表偏移的Bootloader工程(Keil MDK),支持一键编译下载… 2026/7/5 9:44:42
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36