当前位置:首页 > Rust > 正文

Rust语言操作SQLite数据库入门指南(使用rusqlite封装库从零开始)

在现代软件开发中,轻量级、嵌入式数据库如 SQLite 被广泛用于本地数据存储。而 Rust 作为一门内存安全、高性能的系统编程语言,正越来越受到开发者青睐。本文将带你从零开始,使用 rusqlite 这个官方推荐的 Rust SQLite 封装库,轻松实现数据库的创建、插入、查询等基本操作。

Rust语言操作SQLite数据库入门指南(使用rusqlite封装库从零开始) Rust rusqlite SQLite数据库操作 SQLite教程 第1张

什么是 rusqlite?

rusqlite 是一个 Rust crate(包),它为 SQLite C 库提供了安全、惯用的 Rust 接口。它支持事务、预编译语句、类型映射等功能,让 Rust 开发者可以像使用原生 API 一样操作 SQLite 数据库,同时享受 Rust 的内存安全保证。

准备工作:创建 Rust 项目并添加依赖

首先,确保你已安装 Rust 工具链(可通过 rustup.rs 安装)。然后在终端执行以下命令创建新项目:

cargo new rust_sqlite_democd rust_sqlite_demo

接着,在 Cargo.toml 文件中添加 rusqlite 依赖:

[dependencies]rusqlite = { version = "0.31", features = ["bundled"] }

其中 features = ["bundled"] 表示自动编译并链接 SQLite 源码,无需系统预先安装 SQLite 库,非常适合初学者。

第一步:连接数据库并创建表

打开 src/main.rs,写入以下代码:

use rusqlite::{params, Connection, Result};fn main() -> Result<()> {    // 打开或创建一个名为 "users.db" 的 SQLite 数据库    let conn = Connection::open("users.db")?;    // 创建 users 表    conn.execute(        "CREATE TABLE IF NOT EXISTS users (            id INTEGER PRIMARY KEY,            name TEXT NOT NULL,            age INTEGER        )",        [], // 无参数    )?;    println!("✅ 数据库和表创建成功!");    Ok(())}

这段代码会创建一个名为 users.db 的数据库文件,并在其中创建 users 表(如果不存在)。字段包括 id(主键)、nameage

第二步:插入数据

main 函数中继续添加插入逻辑:

// 插入一条用户记录conn.execute(    "INSERT INTO users (name, age) VALUES (?1, ?2)",    params!["张三", 28],)?;println!("✅ 用户数据插入成功!");

这里使用了 params! 宏来安全地绑定参数,防止 SQL 注入。

第三步:查询并打印数据

最后,我们查询所有用户并打印出来:

// 查询所有用户let mut stmt = conn.prepare("SELECT id, name, age FROM users")?;let user_iter = stmt.query_map([], |row| {    Ok((        row.get::<_, i32>(0)?,        row.get::<_, String>(1)?,        row.get::<_, i32>(2)?,    ))})?;println!("\n📋 当前用户列表:");for user in user_iter {    let (id, name, age) = user?;    println!("ID: {}, 姓名: {}, 年龄: {}", id, name, age);}

完整代码示例

将以上步骤整合,完整的 main.rs 如下:

use rusqlite::{params, Connection, Result};fn main() -> Result<()> {    let conn = Connection::open("users.db")?;    conn.execute(        "CREATE TABLE IF NOT EXISTS users (            id INTEGER PRIMARY KEY,            name TEXT NOT NULL,            age INTEGER        )",        [],    )?;    conn.execute(        "INSERT INTO users (name, age) VALUES (?1, ?2)",        params!["张三", 28],    )?;    let mut stmt = conn.prepare("SELECT id, name, age FROM users")?;    let user_iter = stmt.query_map([], |row| {        Ok((            row.get::<_, i32>(0)?,            row.get::<_, String>(1)?,            row.get::<_, i32>(2)?,        ))    })?;    println!("✅ 操作完成!");    println!("\n📋 用户列表:");    for user in user_iter {        let (id, name, age) = user?;        println!("ID: {}, 姓名: {}, 年龄: {}", id, name, age);    }    Ok(())}

运行程序

在项目根目录执行:

cargo run

你将看到类似如下输出:

✅ 操作完成!📋 用户列表:ID: 1, 姓名: 张三, 年龄: 28

总结

通过本教程,你已经掌握了如何使用 Rustrusqlite 库进行基本的 SQLite数据库操作。无论是开发桌面应用、命令行工具还是嵌入式系统,这种轻量级的数据持久化方案都非常实用。

记住,rusqlite 还支持更多高级功能,如事务、自定义函数、BLOB 处理等。建议查阅其 官方文档 深入学习。

关键词:Rust, rusqlite, SQLite数据库操作, Rust SQLite教程