SQlite3

SQlite3 是轻量级的嵌入式关系型数据库

适合场景:SQLite3 适合数据量不大(通常 < 10GB)、并发访问不高的场景

创建 / 打开数据库

复制代码
sqlite3 test.db  # 打开或创建 test.db 数据库

创建表

复制代码
CREATE TABLE users (id INT PRIMARY KEY, name TEXT, age INT);

插入数据:

复制代码
INSERT INTO users VALUES (1, 'Alice', 25);
INSERT INTO users VALUES (2, 'Bob', 30);

查询数据

复制代码
SELECT * FROM users;  # 输出所有用户
SELECT name FROM users WHERE age > 28;  # 查询年龄>28的用户

退出 :输入 .quit 或 .exit

C 语言 API 编程:

1.包含头文件并链接库

复制代码
#include <sqlite3.h>
// 编译时链接:-lsqlite3 或直接编译 sqlite3.c 源码

2.打开数据库

复制代码
sqlite3 *db;
int ret = sqlite3_open("test.db", &db);  // 打开数据库,db 为句柄
if (ret != SQLITE_OK) {
    fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
    return -1;
}

3.执行 SQL 语句(如创建表、插入数据)

复制代码
const char *create_sql = "CREATE TABLE IF NOT EXISTS users (id INT, name TEXT);";
char *err_msg = NULL;
ret = sqlite3_exec(db, create_sql, NULL, NULL, &err_msg);  // 执行 SQL
if (ret != SQLITE_OK) {
    fprintf(stderr, "创建表失败: %s\n", err_msg);
    sqlite3_free(err_msg);  // 释放错误信息
}

4.查询数据(使用回调函数处理结果)

复制代码
// 回调函数:每查询到一行数据就会被调用
static int callback(void *data, int argc, char **argv, char **col_name) {
    for (int i = 0; i < argc; i++) {
        printf("%s = %s\n", col_name[i], argv[i] ? argv[i] : "NULL");
    }
    return 0;
}

const char *select_sql = "SELECT * FROM users;";
ret = sqlite3_exec(db, select_sql, callback, NULL, &err_msg);  // 执行查询,回调处理结果

5.关闭数据库

复制代码
sqlite3_close(db);  // 关闭数据库句柄
  1. 并发限制:SQLite3 写操作会锁定整个数据库(读操作可并发),高并发写场景(如多用户同时写入)不适用,适合单用户或低并发场景。
相关推荐
辻弋2011 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_2 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼2 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川2 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路3 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna3 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白3 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
晚安日记wanna3 小时前
索引建了却不走?7 个失效原因逐层排查
数据库·mysql·性能优化
YIAN3 小时前
实战|用 DeepSeek + SQLite 从零搭建轻量 Text2SQL 查询助手
后端·sqlite·deepseek
KID1412号4 小时前
PostgreSQL入门
数据库·postgresql