rust中使用sqlite 之 rusqlite使用
// 引入rusqlite库
use rusqlite::{Connection, OptionalExtension};
fn main() -> rusqlite::Result<()> {
// 创建或打开数据库
let conn = Connection::open("example.db")?;
// 创建一个新表
conn.execute(
"CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)",
[],
)?;
// 插入数据
conn.execute(
"INSERT INTO users (name) VALUES (?)",
&[&"Alice"],
)?;
// 查询数据
let mut stmt = conn.prepare("SELECT id, name FROM users WHERE name = ?")?;
let user_name = "Alice";
let user_iter = stmt.query_map([user_name], |row| {
Ok(User {
id: row.get(0)?,
name: row.get(1)?,
})
})?;
// 打印查询结果
for user in user_iter {
println!("Found user with ID: {}, name: {}", user?.id, user?.name);
}
Ok(())
}
// 定义一个用户结构体
#[derive(Debug)]
struct User {
id: i32,
name: String,
}
// 实现rusqlite::FromRow trait,允许User结构体从行中直接解析
impl rusqlite::FromRow for User {
fn from_row(row: &rusqlite::Row) -> rusqlite::Result<Self> {
Ok(User {
id: row.get(0)?,
name: row.get(1)?,
})
}
}
这段代码展示了如何在Rust中使用rusqlite
库来操作SQLite数据库。首先,它创建了一个新的数据库连接,然后创建了一个新表,接着插入了一条数据,并且通过准备好的语句查询了这条数据。代码还展示了如何定义一个结构体以及如何从数据库行中解析数据到这个结构体中。
评论已关闭