news 2026/6/26 14:57:05

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/6/19 10:47:51

HoRain云--SpringCache整合Redis缓存最佳实践

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

作者头像 李华
网站建设 2026/6/19 2:26:43

HoRain云--解决8080端口占用的3种高效方案

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

作者头像 李华
网站建设 2026/6/24 15:06:25

HoRain云--Go语言递归函数详解与优化技巧

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…

作者头像 李华
网站建设 2026/6/19 5:54:55

计算机毕业设计|基于ssm + vue社团管理系统(源码+数据库+文档)

社团管理 目录 基于springboot vue个人记账系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于ssm vue社团管理系统 一、前言 博主介绍&#xff1a;✌️大厂码农|…

作者头像 李华
网站建设 2026/6/24 22:33:10

校园外卖系统(源码+数据库+文档)

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

作者头像 李华
网站建设 2026/6/19 9:40:44

在线考试系统(源码+数据库+文档)

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

作者头像 李华