嵌入式 SQLite 数据库开发笔记1

发布于:2025-09-10 ⋅ 阅读:(21) ⋅ 点赞:(0)

嵌入式 SQLite 数据库开发入门笔记

在嵌入式开发中,处理数据存储和管理是必不可少的环节。对于资源有限的嵌入式系统,轻量级数据库 SQLite 是一个非常适合的选择。本文将结合实践代码和概念,系统梳理 SQLite 在嵌入式中的使用方法。


一、SQLite简介

定义:SQLite 是一个轻量级的关系型数据库管理系统(RDBMS),它以文件的形式存储数据,不需要独立的数据库服务进程,直接嵌入到应用程序中即可使用。

作用

  • 管理海量数据,提供高效的增删改查(CRUD)操作。

  • 适合单机、嵌入式、移动设备的轻量存储需求。

  • 支持标准 SQL 语法,方便开发者上手。

数据组织结构(从大到小):

数据库(Database) -> 表(Table) -> 记录/行(Row) -> 字段/列(Column)

二、SQLite 命令行工具常用操作

SQLite 也提供了命令行工具用于直接操作数据库,非常适合调试和学习:

命令 功能
.help 显示帮助信息
.database 显示当前数据库文件名
.table 列出数据库中所有表
.header on 打开表头显示
.schema 表名 查看表结构
.q 退出 SQLite 命令行

SQL 常用语法

  • 插入数据

INSERT INTO 表名 VALUES (值1, 值2, ...);
  • 查询数据

SELECT 列名 FROM 表名;
SELECT * FROM 表名 WHERE id > 10;
SELECT * FROM user WHERE name LIKE 'li%';
  • 更新数据

UPDATE 表名 SET 字段=值 WHERE 条件;
  • 删除数据

DELETE FROM 表名 WHERE 条件;

注意

  • LIKE 支持 % 表示任意多个字符,_ 表示一个任意字符。

  • SQL 语句末尾通常以分号 ; 结尾。


三、嵌入式C语言调用 SQLite

在嵌入式开发中,我们通常通过 SQLite 提供的 C API 来操作数据库:

1. 基本流程

  1. 打开数据库

sqlite3 *db = NULL;
int ret = sqlite3_open("./aaa.db", &db);
if (ret != SQLITE_OK) {
    fprintf(stderr, "sqlite3_open error: %s\n", sqlite3_errstr(ret));
    sqlite3_close(db);
    return 1;
}
  1. 执行 SQL 语句

char sql_cmd[] = "INSERT INTO user VALUES(11,'lisi',20);";
char *errmsg = NULL;
ret = sqlite3_exec(db, sql_cmd, NULL, NULL, &errmsg);
if (ret != SQLITE_OK) {
    fprintf(stderr, "sqlite3_exec error: %s\n", errmsg);
    sqlite3_free(errmsg);
    sqlite3_close(db);
    return 1;
}
  1. 关闭数据库

sqlite3_close(db);

2. 注意事项

  • sqlite3_open() 成功后一定要记得 sqlite3_close(),防止内存泄漏。

  • sqlite3_exec() 可以执行任何 SQL 语句,如果出错,errmsg 会返回错误信息,需要手动释放。

  • 对于复杂查询,可以配合回调函数或 sqlite3_prepare_v2 来处理结果集。


四、嵌入式 SQLite 开发心得

  1. 轻量易用:SQLite 无需独立服务进程,特别适合嵌入式系统和单片机应用。

  2. 易于集成:C语言 API 简单直接,适合和嵌入式应用程序绑定。

  3. 可扩展性:虽然轻量,但支持事务、索引和多表操作,满足一般数据处理需求。

  4. 调试方便:结合命令行工具,SQL 语句可以直接测试和调试。

  5. 性能优化:在高频插入场景,可以通过事务批量提交提高效率。


五、示例场景

假设一个嵌入式设备需要管理用户信息:

  1. 建表

CREATE TABLE user (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
);
  1. C语言插入数据

INSERT INTO user VALUES(1,'zhangsan',25);
INSERT INTO user VALUES(2,'lisi',30);
  1. 查询用户信息

SELECT * FROM user WHERE age > 25;

通过 SQLite,嵌入式设备可以实现完整的数据管理功能,而无需复杂数据库服务支持。


六、总结

  • SQLite 是嵌入式数据库的首选方案,操作简单、性能适中。

  • 掌握 C API(sqlite3_opensqlite3_execsqlite3_close)即可完成大部分开发任务。

  • 结合命令行调试和事务优化,可以快速搭建可靠的数据管理模块。


网站公告

今日签到

点亮在社区的每一天
去签到