news 2026/5/28 14:05:21

SQLite3 数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQLite3 数据库

一、数据库基础认知

1. 数据库核心价值

数据库是 “数据的仓库”,即使面对海量数据,也能实现:

  • 安全存储数据;
  • 高效的统计分析;
  • 数据的增删改查(CRUD)管理。嵌入式设备中引入数据库,可解决传统文件存储数据混乱、查询效率低的问题。

2. 数据库核心结构

plaintext

库 → 表(行、列) → 记录(行) → 字段(列)
  • 库:数据的容器,一个数据库可包含多张表;
  • 表:数据的组织单元,由行(记录)和列(字段)组成;
  • 记录:一行数据,代表一个完整的实体信息;
  • 字段:一列数据,代表实体的某个属性(如 id、name)。

3. 数据库分类与常见名词

(1)数据库分类(按规模)
规模代表产品适用场景
大型ORACLE、DB2企业级核心业务、海量数据存储
中型MySQL、MSSQL中小型系统、互联网应用
小型SQLite3、powdb嵌入式设备、轻量级应用
(2)核心名词
  • DB:数据库(Database),存储数据的集合;
  • DBMS:数据库管理系统(Database Management System),管理数据库的软件(如 SQLite3);
  • MIS:管理信息系统(Management Information System),基于数据库的业务管理系统;
  • OA:办公自动化(Office Automation),数据库驱动的办公系统。

二、嵌入式首选:SQLite3 核心特性

SQLite3 是遵循 GNU 开源协议的嵌入式关系型数据库,由 C 语言开发,专为轻量级场景设计,核心特点如下:

  1. 极致轻量:核心代码仅 1 万行左右,安装包总大小 10M 以内,适配资源受限的嵌入式设备;
  2. 无需安装:绿色软件,无需配置服务、无需依赖第三方库,开箱即用;
  3. 文件型数据库:数据存储在单一文件中,可直接移动、拷贝,部署便捷;
  4. 容量上限高:单数据库文件最大支持 2TB,满足嵌入式场景的海量数据需求;
  5. 跨平台:支持 Linux、Windows、嵌入式系统(如 RTOS)等多平台。

三、SQLite3 安装与环境配置(Linux)

1. 安装核心包

bash

运行

# 安装sqlite3命令行工具 sudo apt-get install sqlite3 # 安装开发库(用于C语言编程) sudo apt-get install libsqlite3-dev

2. 编译 C 语言程序

编写 SQLite3 程序后,编译时需链接sqlite3库:

bash

运行

gcc test.c -lsqlite3 -o test

四、SQLite3 常用指令与 SQL 语句

1. 核心指令(终端交互)

启动 SQLite3:sqlite3 数据库名.db(若数据库不存在则自动创建)。

指令功能
.database查看数据库关联的物理文件
.table列出数据库中的所有表
.schema显示表的创建语句(建表结构)
.q/.quit/.exit退出 SQLite3 终端
.header on显示查询结果的表头(字段名)

2. 核心 SQL 语句(必须以分号结尾)

(1)创建表

sql

create table user(id int, name char, age int);
(2)删除表

sql

drop table user;
(3)插入数据

sql

insert into user values(3,"wang",11);
(4)查询数据

sql

-- 查询age大于20或小于50的所有记录 select * from user where age>20 or age<50;
(5)修改数据

sql

-- 将name为'li'的记录的id改为1 update user set id = 1 where name = 'li';
(6)删除数据

sql

-- 删除id为1或2的记录 delete from user where id = 1 or id = 2;

五、C 语言操作 SQLite3 实战

SQLite3 提供简洁的 C 语言 API,核心流程为:打开数据库 → 执行 SQL 语句 → 关闭数据库

1. 核心 API 说明

函数功能
sqlite3_open()打开 / 创建数据库,返回数据库句柄
sqlite3_exec()执行 SQL 语句(增删改查)
sqlite3_close()关闭数据库句柄
sqlite3_errmsg()获取错误信息
sqlite3_free()释放错误信息内存

2. 完整示例:插入数据到数据库

c

运行

#include <stdio.h> #include <sqlite3.h> int main(int argc, char** argv) { // 数据库句柄 sqlite3* db = NULL; // 打开/创建123.db数据库 int ret = sqlite3_open("123.db", &db); if (ret != SQLITE_OK) { fprintf(stderr, "打开数据库失败:%s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } // 定义要执行的SQL语句 char* errmsg = NULL; char sql_cmd[512] = "insert into user values(6,'lvbu',31);"; // 执行SQL语句 ret = sqlite3_exec(db, sql_cmd, NULL, NULL, &errmsg); if (ret != SQLITE_OK) { fprintf(stderr, "执行SQL失败:%s\n", errmsg); sqlite3_free(errmsg); // 释放错误信息内存 sqlite3_close(db); return 1; } printf("数据插入成功!\n"); // 关闭数据库 sqlite3_close(db); return 0; }

3. 代码说明

  • sqlite3_open:第一个参数为数据库文件名,第二个参数为输出型参数,返回数据库句柄;
  • sqlite3_exec:第二个参数为要执行的 SQL 语句,最后一个参数接收错误信息;
  • 错误处理:执行失败时需通过sqlite3_errmsg获取详情,且errmsg需手动释放内存;
  • 收尾:无论执行成功与否,都需调用sqlite3_close关闭数据库句柄,避免资源泄漏。

六、嵌入式场景应用建议

  1. 数据存储优化:嵌入式设备中建议将数据库文件存储在 Flash/SD 卡中,避免频繁写入内存;
  2. SQL 语句简化:嵌入式场景优先使用简单 SQL 语句,减少数据库运算开销;
  3. 错误处理强化:嵌入式设备无交互界面,需将数据库操作错误日志写入本地文件,方便调试;
  4. 并发控制:SQLite3 默认支持单线程,多线程场景需加锁或使用sqlite3_threadsafe()配置线程安全。

七、总结

SQLite3 以轻量、易用、跨平台的特性,成为嵌入式开发中数据管理的最优解。掌握其基础指令、SQL 语句及 C 语言编程接口,可快速实现嵌入式设备的海量数据存储与管理。无论是智能家居、工业控制还是物联网设备,SQLite3 都能以极小的资源开销,满足数据增删改查的核心需求。

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

从零实现:电源电路PCB线宽计算与验证

电源走线设计的“生死线”&#xff1a;从公式到实战&#xff0c;手把手教你算对每一条PCB铜箔你有没有遇到过这样的情况&#xff1f;板子打回来&#xff0c;上电测试没几分钟&#xff0c;某根电源线附近就开始发烫&#xff0c;红外热像仪一扫——局部温升飙到60C以上。再跑一会…

作者头像 李华
网站建设 2026/5/10 2:38:13

OpCore Simplify:颠覆传统Hackintosh配置的智能革命

OpCore Simplify&#xff1a;颠覆传统Hackintosh配置的智能革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的Hackintosh配置头疼不已吗…

作者头像 李华
网站建设 2026/5/3 23:24:53

PyTorch-CUDA-v2.9镜像连接消息队列实现异步任务处理

PyTorch-CUDA-v2.9 镜像与消息队列的异步任务处理实践 在现代 AI 系统中&#xff0c;一个常见的痛点是&#xff1a;用户上传一张图片&#xff0c;后端却要卡住几十秒等待模型推理完成。这种同步阻塞模式不仅体验差&#xff0c;还极易在高并发下拖垮服务。更糟的是&#xff0c;当…

作者头像 李华
网站建设 2026/5/14 22:22:54

PHP程序员理论派 VS 实战派的庖丁解牛

PHP 程序员的“理论派”与“实战派”之争&#xff0c;不是“谁对谁错”&#xff0c;而是“认知系统在不同问题域下的失效与互补”。 二者本质是抽象思维&#xff08;Abstraction&#xff09; 与具象思维&#xff08;Concretization&#xff09; 的差异&#xff0c;单独任一派都…

作者头像 李华
网站建设 2026/5/28 14:05:26

PakePlus跨平台应用打包完整指南:5分钟将网页变桌面应用

PakePlus跨平台应用打包完整指南&#xff1a;5分钟将网页变桌面应用 【免费下载链接】PakePlus Turn any webpage into a desktop app and mobile app with Rust. 利用 Rust 轻松构建轻量级(仅5M)多端桌面应用和多端手机应用 项目地址: https://gitcode.com/GitHub_Trending/…

作者头像 李华
网站建设 2026/5/15 16:56:23

PyTorch-CUDA-v2.9镜像上传至私有Docker仓库的操作流程

PyTorch-CUDA-v2.9镜像上传至私有Docker仓库的操作流程 在现代AI研发环境中&#xff0c;一个常见的痛点是&#xff1a;开发者在本地训练模型时一切正常&#xff0c;但一旦部署到服务器或交付给同事复现&#xff0c;就频频报错——“CUDA not available”、“cudnn error”、“v…

作者头像 李华