Rust 操作Sqlite数据库详细教程

Rust 操作Sqlite数据库详细教程

一、Sqlite数据库介绍

SQLite 是一款轻量级、嵌入式的关系型数据库管理系统,具有以下核心特性:

1、无服务器架构

  • 无需独立服务进程,数据库直接存储在单一文件中(如 .db.sqlite 扩展名)。
  • 应用程序通过函数库直接读写文件,简化部署流程。

2、零配置与跨平台

  • 无需安装或管理配置,开箱即用。
  • 支持所有主流操作系统(Windows/Linux/macOS)及移动端(Android/iOS)。

3、事务支持与 ACID 兼容

  • 完全满足 ACID(原子性、一致性、隔离性、持久性)特性。
  • 通过回滚日志实现事务安全:
    { 写入前备份数据 故障时恢复至备份点 \begin{cases} \text{写入前备份数据} \\ \text{故障时恢复至备份点} \end{cases} {写入前备份数据故障时恢复至备份点

4、应用场景

场景 优势
嵌入式设备 低内存占用(约 250KB)
移动应用 无需网络连接
小型网站/本地工具 快速读写响应

5、性能与局限性

  • 优势
    • 高并发读操作(支持多线程同时读取)。
    • 低延迟(数据访问直接操作文件)。
  • 限制
    • 写入并发性较低(全库锁机制)。
    • 单文件最大支持约 140TB,但推荐用于中小型数据集。

6、适用技术栈

  • 语言支持:C/C++/Python/Java/JavaScript 等。
  • 开发工具:DB Browser for SQLite(图形化管理)。

总结 :SQLite 是轻量级本地数据库的首选,适用于独立应用、IoT 设备和原型开发。其设计哲学可概括为:
简单性 ≫ 扩展性 \text{简单性} \gg \text{扩展性} 简单性≫扩展性

二、Rust 操作Sqlite数据库详细教程

1、添加依赖库

使用cargo add sqlite命令添加依赖,如下图

2、编写测试代码

rust 复制代码
fn main(){

    //创建表
    let connection = sqlite::open("test.db").unwrap();

    let query = "
    CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER);";
    connection.execute(query).unwrap();

    //增
    let query = "
    INSERT INTO users VALUES ('Xp1', 42);
    INSERT INTO users VALUES ('Xp2', 69);";
    connection.execute(query).unwrap();

    //查
    let query = "SELECT * FROM users";

    connection.iterate(query, |pairs| {
            for &(name, value) in pairs.iter() {
                println!("{} = {}", name, value.unwrap());
            }
            true
        })
        .unwrap();

    println!("-------------------");
    let query = "SELECT * FROM users WHERE age > ?";

    for row in connection
        .prepare(query)
        .unwrap()
        .into_iter()
        .bind((1, 50))
        .unwrap()
        .map(|row| row.unwrap())
    {
        println!("name = {}", row.read::<&str, _>("name"));
        println!("age = {}", row.read::<i64, _>("age"));
    }



}

3、运行结果

rust 复制代码
C:/Users/徐鹏/.cargo/bin/cargo.exe run --color=always --package tttRust --bin tttRust --profile dev
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s
     Running `target\debug\tttRust.exe`
name = Alice
age = 42
name = Bob
age = 69
name = Alice
age = 42
name = Bob
age = 69
name = Xp1
age = 42
name = Xp2
age = 69
name = Xp1
age = 42
name = Xp2
age = 69
name = Xp1
age = 42
name = Xp2
age = 69
-------------------
name = Bob
age = 69
name = Bob
age = 69
name = Xp2
age = 69
name = Xp2
age = 69
name = Xp2
age = 69

进程已结束,退出代码为 0
相关推荐
想你依然心痛12 小时前
AI赋能编程语言挑战赛:从Python到Rust,我用AI大模型重塑开发效率
人工智能·python·rust
蜘蛛小助理12 小时前
研发团队效率神器:手把手教你用蜘蛛表格构建自动化任务管理中枢
数据库·自动化·任务管理·多维表格·蜘蛛表格
计算机毕设VX:Fegn089512 小时前
计算机毕业设计|基于springboot + vue酒店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Hui Baby12 小时前
全局事务入口感知子事务方法-TCC
java·开发语言·数据库
Leon-Ning Liu12 小时前
Oracle 19c RAC报错ORA-17503,ORA-27300,ORA-27301,ORA-27302
数据库·oracle
嘟嘟w13 小时前
DROP DELETE 和TRUNCATE的区别?
数据库·mysql·oracle
Navicat中国13 小时前
Navicat x 达梦技术指引 | 数据字典
数据库·达梦·可视化·navicat·数据字典
running up13 小时前
Spring核心深度解析:AOP与事务管理(TX)全指南
java·数据库·spring
一水鉴天13 小时前
整体设计 定稿 之6 完整设计文档讨论及定稿 之1(豆包周助手)
java·前端·数据库
云上漫步者14 小时前
深度实战:Rust交叉编译适配OpenHarmony PC——sys_locale完整适配案例
开发语言·后端·rust