Rust 操作 sqlite3 数据库
【摘要】 在 Rust 中操作 SQLite 数据库,通常使用 rusqlite crate。rusqlite 是一个流行的 Rust 库,提供了对 SQLite 数据库的便捷访问。以下是如何使用 rusqlite 进行基本数据库操作的步骤。 步骤添加依赖:在你的 Cargo.toml 文件中添加 rusqlite 作为依赖。[dependencies]rusqlite = "0.29"建立数据库连接...
在 Rust 中操作 SQLite 数据库,通常使用 rusqlite
crate。rusqlite
是一个流行的 Rust 库,提供了对 SQLite 数据库的便捷访问。以下是如何使用 rusqlite
进行基本数据库操作的步骤。
步骤
-
添加依赖:
在你的Cargo.toml
文件中添加rusqlite
作为依赖。[dependencies] rusqlite = "0.29"
-
建立数据库连接:
使用rusqlite
提供的Connection
对象来连接到 SQLite 数据库。 -
执行 SQL 语句:
使用execute
方法执行不带返回结果的 SQL 语句(如INSERT
、UPDATE
、DELETE
)。 -
查询数据:
使用query
或query_row
方法执行带返回结果的 SQL 查询。
下面是一个简单的示例,演示如何使用 rusqlite
进行基本的数据库操作。
示例代码
use rusqlite::{params, Connection, Result};
fn main() -> Result<()> {
// 创建或打开一个 SQLite 数据库文件
let conn = Connection::open("my_database.db")?;
// 创建一个表
conn.execute(
"CREATE TABLE IF NOT EXISTS person (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)",
[],
)?;
// 插入一些数据
conn.execute(
"INSERT INTO person (name, age) VALUES (?1, ?2)",
params!["Alice", 30],
)?;
conn.execute(
"INSERT INTO person (name, age) VALUES (?1, ?2)",
params!["Bob", 25],
)?;
// 查询数据
let mut stmt = conn.prepare("SELECT id, name, age FROM person")?;
let person_iter = stmt.query_map([], |row| {
Ok(Person {
id: row.get(0)?,
name: row.get(1)?,
age: row.get(2)?,
})
})?;
for person in person_iter {
println!("Found person {:?}", person?);
}
Ok(())
}
#[derive(Debug)]
struct Person {
id: i32,
name: String,
age: i32,
}
解释
-
打开数据库:
let conn = Connection::open("my_database.db")?;
这行代码打开一个名为
my_database.db
的 SQLite 数据库文件。如果文件不存在,会自动创建。 -
创建表:
conn.execute( "CREATE TABLE IF NOT EXISTS person ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL )", [], )?;
这段代码创建一个名为
person
的表,包含id
、name
和age
三个字段。 -
插入数据:
conn.execute( "INSERT INTO person (name, age) VALUES (?1, ?2)", params!["Alice", 30], )?;
使用
params!
宏来传递参数,避免 SQL 注入。 -
查询数据:
let mut stmt = conn.prepare("SELECT id, name, age FROM person")?; let person_iter = stmt.query_map([], |row| { Ok(Person { id: row.get(0)?, name: row.get(1)?, age: row.get(2)?, }) })?;
prepare
方法用于准备 SQL 查询,query_map
用于执行查询并映射结果到结构体。 -
打印结果:
迭代查询结果并打印每个Person
对象。
这样,你就可以在 Rust 中使用 rusqlite
进行 SQLite 数据库操作了!
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)