Rust如何操作SQLite数据库

最近在学习Rust,想用SQLite做个小项目。请问在Rust中如何连接和操作SQLite数据库?需要用什么库比较好?能否给个简单的代码示例,比如创建表、插入数据和查询数据的基本操作?另外在实际项目中需要注意哪些性能和安全方面的问题?

2 回复

使用Rust操作SQLite,常用rusqlite库。步骤:

  1. 添加依赖:rusqlite = "0.29"
  2. 连接数据库:Connection::open("test.db")?
  3. 执行SQL:conn.execute("CREATE TABLE ...", [])?
  4. 查询数据:conn.prepare("SELECT ...")?

支持参数绑定、事务等。简单高效!


在Rust中操作SQLite数据库,主要有以下几种方式:

1. 使用 rusqlite 库(推荐)

这是最常用的SQLite Rust绑定。

安装依赖

Cargo.toml 中添加:

[dependencies]
rusqlite = "0.30"

基本使用示例

use rusqlite::{Connection, Result};

fn main() -> Result<()> {
    // 连接数据库(不存在则创建)
    let conn = Connection::open("test.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)",
        &["Alice", "25"],
    )?;
    
    // 查询数据
    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)?,
        ))
    })?;
    
    for user in user_iter {
        let (id, name, age) = user?;
        println!("ID: {}, Name: {}, Age: {}", id, name, age);
    }
    
    Ok(())
}

2. 使用 diesel ORM

对于更复杂的应用,可以使用Diesel ORM。

安装依赖

[dependencies]
diesel = { version = "2.1", features = ["sqlite"] }
diesel_migrations = "2.1"

主要特性

  • 类型安全:Rusqlite提供类型安全的查询
  • 事务支持:完整的事务管理
  • 预编译语句:提高查询性能
  • 错误处理:完善的Result错误处理

常用操作

  • 连接数据库:Connection::open()
  • 执行SQL:execute()
  • 查询:prepare() + query_map()
  • 事务:transaction()

rusqlite库是操作SQLite的首选,它功能完善、文档齐全,适合大多数应用场景。

回到顶部