Rust如何操作SQLite数据库
最近在学习Rust,想用SQLite做个小项目。请问在Rust中如何连接和操作SQLite数据库?需要用什么库比较好?能否给个简单的代码示例,比如创建表、插入数据和查询数据的基本操作?另外在实际项目中需要注意哪些性能和安全方面的问题?
2 回复
使用Rust操作SQLite,常用rusqlite库。步骤:
- 添加依赖:
rusqlite = "0.29" - 连接数据库:
Connection::open("test.db")? - 执行SQL:
conn.execute("CREATE TABLE ...", [])? - 查询数据:
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的首选,它功能完善、文档齐全,适合大多数应用场景。

