news 2026/4/23 15:54:27

SQLite3学习笔记6:UPDATE(改)+ DELETE(删)数据(C API)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQLite3学习笔记6:UPDATE(改)+ DELETE(删)数据(C API)

核心知识点

  1. 实现方式:UPDATE 和 DELETE 依然用sqlite3_exec执行,语法和命令行完全一致,无需回调函数(因为不返回查询结果);
  2. 核心规范:
    • 必须在 SQL 语句中加 WHERE 条件,避免全表修改 / 删除(嵌入式中误操作会导致设备数据全丢);
    • 执行后通过返回值(SQLITE_OK)判断是否成功,无需回调;
    • 对高频修改的参数(如温度),建议基于param_nameid条件操作,保证精准性。

完整 C 代码示例

创建文件sqlite3_c_demo3.c

#include<stdio.h>#include<stdlib.h>#include<sqlite3.h>// 回调函数:用于验证UPDATE/DELETE后的结果staticintselect_callback(void*data,intargc,char**argv,char**azColName){printf("[%s]\n",(char*)data);for(inti=0;i<argc;i++){// 判空避免空指针printf(" %s = %s\n",azColName[i],argv[i]?argv[i]:"NULL");}printf("\n");return0;}intmain(intargc,char*argv[]){sqlite3*db=NULL;char*err_msg=NULL;intret=SQLITE_OK;// 1. 打开数据库ret=sqlite3_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_sql="UPDATE device_params SET param_value = 27.0, update_ts = datetime(CURRENT_TIMESTAMP, '+8 hours') WHERE param_name = 'temp';";ret=sqlite3_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_sql="SELECT param_name, param_value FROM device_params WHERE param_name = 'temp';";ret=sqlite3_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_sql="DELETE FROM device_params WHERE param_name = 'humidity';";ret=sqlite3_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_sql="SELECT * FROM device_params;";ret=sqlite3_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. 关闭数据库ret=sqlite3_close(db);if(ret!=SQLITE_OK){fprintf(stderr,"[ERROR] 关闭数据库失败: %s\n",sqlite3_errmsg(db));return-1;}printf("[INFO] 数据库关闭成功\n");return0;}

操作步骤

  1. 编译代码(链接 sqlite3 库):
gcc sqlite3_c_demo3.c -o sqlite3_c_demo3 -lsqlite3
  1. 运行程序:
./sqlite3_c_demo3

输出如下:

[INFO]数据库打开成功[INFO]温度更新成功(26.5→27.0)[更新后的温度参数]param_name=temp param_value=27.0[INFO]湿度数据删除成功[删除后的所有参数]id=1param_name=temp param_value=27.0update_ts=2026-01-2713:45:25[INFO]数据库关闭成功
  1. 验证结果:
sqlite3 embedded_db.db"SELECT * FROM device_params;"

输出如下:

1|temp|27.0|2026-01-2713:45:25
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:54:30

springboot校园一卡通学生饭卡管理系统

目录系统概述核心功能技术架构创新点应用价值开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 SpringBoot校园一卡通学生饭卡管理系统是基于SpringBoot框架开发的数字化管理平台&#xff0c;旨在实现学生饭卡的统一管理…

作者头像 李华
网站建设 2026/4/23 8:19:31

校园跑腿系统(源码+数据库+文档)

校园跑腿 目录 基于springboot vue校园跑腿系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue校园跑腿系统 一、前言 博主介绍&#xff1a;✌️大…

作者头像 李华
网站建设 2026/4/22 19:15:09

全网最全8个AI论文软件,自考学生轻松搞定毕业论文!

全网最全8个AI论文软件&#xff0c;自考学生轻松搞定毕业论文&#xff01; AI工具如何让论文写作不再难 在自考学习的道路上&#xff0c;毕业论文往往是最让人头疼的一关。从选题、大纲搭建到内容撰写、查重降重&#xff0c;每一个环节都可能成为阻碍前行的障碍。而随着人工智能…

作者头像 李华
网站建设 2026/4/23 8:21:14

基于springboot + vue大学生就业招聘系统(源码+数据库+文档)

大学生就业招聘 目录 基于springboot vue大学生就业招聘系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue大学生就业招聘系统 一、前言 博主介绍…

作者头像 李华
网站建设 2026/4/23 8:22:57

文献综述无从下手?这8款AI神器带你轻松突围,百考通AI全程助攻!

对于大多数本科生而言&#xff0c;论文写作中最令人头疼的环节莫过于文献综述。它远不止是简单的文献堆砌&#xff0c;而是需要梳理研究脉络、提炼核心观点、找准研究空白的系统性工程。面对海量文献无从筛选、脉络梳理混乱、格式反复出错等痛点&#xff0c;许多同学只能熬夜苦…

作者头像 李华
网站建设 2026/4/23 8:22:25

情绪宣泄平台系统|基于java + vue情绪宣泄平台系统(源码+数据库+文档)

情绪宣泄平台 目录 基于springboot vue情绪宣泄平台系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue情绪宣泄平台系统 一、前言 博主介绍&…

作者头像 李华