news 2026/3/8 2:34:47

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/3/6 19:41:28

QRCoder实战指南:从入门到精通的二维码生成解决方案

QRCoder实战指南&#xff1a;从入门到精通的二维码生成解决方案 【免费下载链接】QRCoder A pure C# Open Source QR Code implementation 项目地址: https://gitcode.com/gh_mirrors/qr/QRCoder QRCoder是一款纯C#开发的二维码生成库&#xff0c;以其卓越的性能和丰富的…

作者头像 李华
网站建设 2026/3/3 18:07:59

Crawl4AI语义爬虫:从关键词匹配到智能内容发现的技术革命

Crawl4AI语义爬虫&#xff1a;从关键词匹配到智能内容发现的技术革命 【免费下载链接】crawl4ai &#x1f525;&#x1f577;️ Crawl4AI: Open-source LLM Friendly Web Crawler & Scrapper 项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai 你是否曾…

作者头像 李华
网站建设 2026/3/7 0:04:37

Git commit提交记录规范:维护PyTorch-CUDA-v2.9项目代码质量

Git commit提交记录规范&#xff1a;维护PyTorch-CUDA-v2.9项目代码质量 在深度学习项目中&#xff0c;我们常常面临这样的尴尬局面&#xff1a;某个关键模型突然出现性能退化&#xff0c;团队成员纷纷排查&#xff0c;却没人能说清楚是哪次修改引入的问题。翻看Git历史&#…

作者头像 李华
网站建设 2026/3/5 9:56:33

CNN图像分类任务首选PyTorch-CUDA-v2.9镜像环境

CNN图像分类任务首选PyTorch-CUDA-v2.9镜像环境 在当今深度学习项目快速迭代的背景下&#xff0c;一个稳定、高效且开箱即用的开发环境&#xff0c;往往能决定研究或产品化进度的成败。尤其是在处理计算密集型任务如卷积神经网络&#xff08;CNN&#xff09;图像分类时&#x…

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

FFmpeg Windows 32位版本终极配置指南:新手快速上手教程

FFmpeg Windows 32位版本终极配置指南&#xff1a;新手快速上手教程 【免费下载链接】FFmpeg-Builds-Win32 项目地址: https://gitcode.com/gh_mirrors/ff/FFmpeg-Builds-Win32 还在为32位Windows系统上的音视频处理而烦恼吗&#xff1f;FFmpeg-Builds-Win32项目为您提…

作者头像 李华
网站建设 2026/3/4 18:07:01

farmOS终极指南:如何用开源工具实现农场数字化转型

您是否曾经为繁琐的农场记录工作感到头疼&#xff1f;每天面对成堆的纸质记录&#xff0c;却难以从中获取有价值的洞察&#xff1f;在数字化浪潮席卷各行各业的今天&#xff0c;农场管理同样需要拥抱科技变革。farmOS作为一款专为现代农场设计的开源智能管理平台&#xff0c;正…

作者头像 李华