2024年06月10日 Rust与SQLite数据库操作 极客笔记
SQLite是一个轻量级的嵌入式数据库引擎,它在大多数平台上都可以运行,并且不需要独立的服务器进程。Rust是一种系统级编程语言,与C++类似,它也可以用于编写高性能的应用程序。在这篇文章中,我们将探讨如何在Rust中操作SQLite数据库。
在Rust中操作SQLite之前,我们首先需要安装SQLite数据库引擎。你可以在SQLite的官方网站上下载适合你操作系统的预编译的SQLite库,也可以通过包管理工具安装SQLite。
以Ubuntu系统为例,你可以使用以下命令安装SQLite:
sudo apt install sqlite3 libsqlite3-dev
对于其他操作系统,你可以查看官方文档或者使用相应的包管理工具进行安装。
在Rust中操作SQLite数据库需要使用第三方库rusqlite。你可以在Cargo.toml文件中添加rusqlite的依赖:
[dependencies]
rusqlite = "0.23.1"
然后在你的Rust文件中引入rusqlite库:
use rusqlite::{Connection, Result};
在Rust中连接到SQLite数据库非常简单,你只需要调用Connection::open()方法并传入数据库文件的路径即可。如果数据库文件不存在,它会自动创建一个新的数据库文件。
fn main() -> Result<()> {
let conn = Connection::open("test.db")?;
// 执行数据库操作
Ok(())
}
在SQLite中创建表非常简单,你只需要执行一个SQL语句即可。在Rust中,你可以使用execute()方法执行SQL语句:
conn.execute(
"CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)",
[],
)?;
插入数据也非常简单,你只需要执行一个INSERT语句即可。在Rust中,你可以使用execute()方法执行SQL语句并传入参数:
conn.execute(
"INSERT INTO users (name, age) VALUES (?1, ?2)",
&[&"Alice", &30],
)?;
查询数据也非常简单,你可以使用prepare()方法准备一个查询语句,并使用query_map()方法获取查询结果:
let mut stmt = conn.prepare("SELECT id, name, age FROM users")?;
let users = stmt.query_map([], |row| {
Ok(User {
id: row.get(0)?,
name: row.get(1)?,
age: row.get(2)?,
})
})?;
for user in users {
println!("{:?}", user);
}
更新数据也非常简单,你可以执行一个UPDATE语句即可:
conn.execute(
"UPDATE users SET age = ?1 WHERE name = ?2",
&[&40, &"Alice"],
)?;
删除数据也非常简单,你可以执行一个DELETE语句即可:
conn.execute(
"DELETE FROM users WHERE name = ?1",
&[&"Alice"],
)?;
下面是一个完整的示例,演示了如何在Rust中连接到SQLite数据库,并执行各种操作:
use rusqlite::{Connection, Result};
#[derive(Debug)]
struct User {
id: i32,
name: String,
age: i32,
}
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", &30],
)?;
let mut stmt = conn.prepare("SELECT id, name, age FROM users")?;
let users = stmt.query_map([], |row| {
Ok(User {
id: row.get(0)?,
name: row.get(1)?,
age: row.get(2)?,
})
})?;
for user in users {
println!("{:?}", user);
}
conn.execute(
"UPDATE users SET age = ?1 WHERE name = ?2",
&[&40, &"Alice"],
)?;
conn.execute(
"DELETE FROM users WHERE name = ?1",
&[&"Alice"],
)?;
Ok(())
}
在这篇文章中,我们探讨了如何在Rust中操作SQLite数据库。我们学习了如何连接到数据库、创建表、插入数据、查询数据、更新数据和删除数据。通过这些操作,你可以在Rust应用程序中使用SQLite数据库存储和管理数据。
本文链接:http://so.lmcjl.com/news/6324/