什么是 CRUD?
CRUD 是指创建(Create)、读取(Read)、更新(Update)和删除(Delete)四种基本的操作。这些操作是任何应用程序的核心功能,特别是在数据库管理、用户管理等方面。
创建项目
首先,我们需要创建一个新的 Rust 项目。打开终端并运行以下命令:
cargo new rust_crud cd rust_crud
这会生成一个基本的 Cargo 项目结构。接下来,我们将在 Cargo.toml
文件中添加所需的依赖项。打开 Cargo.toml
并添加以下内容:
[dependencies] serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" sqlx = { version = "0.5", features = ["runtime-tokio-rustls", "mysql"] } tokio = { version = "1.0", features = ["full"] }
这里我们使用了 serde
和 serde_json
来处理 JSON 数据,sqlx
用于与 MySQL 数据库交互,以及 tokio
作为异步运行时。
定义数据模型
我们将定义一个简单的数据模型来表示我们的用户信息。在 src/main.rs
中,我们可以使用 serde
来序列化和反序列化数据。
use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize)] struct User { id: Option<i32>, name: String, email: String, }
连接数据库
接下来,我们需要连接到 MySQL 数据库。首先,在 src/main.rs
中导入必要的模块,并设置数据库连接。
-- -------------------- ---- ------- --- ----------------------- --- --------- -------------- ----- -- ------ -- ---------- ------------ - --- ------------ - --------------------------------------------- ---- -- ------ --- ---- - ----------------------------------------- ------------------- -- --- ------------ -- ---------- ------ -
确保你已经设置了 DATABASE_URL
环境变量,指向你的 MySQL 数据库。
创建表
为了存储用户信息,我们需要创建一个表。在 src/main.rs
中,我们可以定义一个函数来执行 SQL 语句。
-- -------------------- ---- ------- ----- -- ------------------ ----------- -- ---------- ------------ - ------------ --------- ----- -- --- ------ ----- - -- --- -------------- ------- ---- ---- ------------ --- ----- ----- ------------ --- ---- ---- - -------------- -------- ------ -
然后在 main
函数中调用这个函数:
-- -------------------- ---- ------- -------------- ----- -- ------ -- ---------- ------------ - --- ------------ - --------------------------------------------- ---- -- ------ --- ---- - ----------------------------------------- --------------------------- -- ---------- ------ -
创建用户
现在我们有了一个表,可以开始创建用户了。我们可以定义一个函数来插入新的用户记录。
-- -------------------- ---- ------- ----- -- ----------------- ----------- ----- ----- -- ---------- ------------ - --- ------ - ------------- ------- ---- ----- ------ ------ ------ --- ---- ---------- ---------- - -------------- -------- ------- - ---------------------------- -- ----- ------ -
然后在 main
函数中调用这个函数:
-- -------------------- ---- ------- -------------- ----- -- ------ -- ---------- ------------ - --- ------------ - --------------------------------------------- ---- -- ------ --- ---- - ----------------------------------------- --------------------------- --- ---- - ---- - --- ----- ----- ----- ----------------- ------ ----------------------------------- -- ------------------ ------------- -- ---------- ------ -
读取用户
接下来,我们需要实现读取用户的逻辑。我们可以定义一个函数来从数据库中查询用户。
-- -------------------- ---- ------- ----- -- -------------- ----------- --- ---- -- -------------------- ------------ - --- ---- - ---------------- ----- ------- --- ----- ----- ---- ----- ----- -- - --- -- - --------------------- -------- -------- -
然后在 main
函数中调用这个函数:
-- -------------------- ---- ------- -------------- ----- -- ------ -- ---------- ------------ - --- ------------ - --------------------------------------------- ---- -- ------ --- ---- - ----------------------------------------- --------------------------- --- ---- - ---- - --- ----- ----- ----- ----------------- ------ ----------------------------------- -- ------------------ ------------- -- --- ---------- - --------------- --------- - --------------- ------ ------ - ---- - ------------ ---- ----- ---- -- ----- - -- ---------- ------ -
更新用户
现在我们已经有了创建和读取用户的代码,接下来我们实现更新用户的逻辑。定义一个函数来更新用户信息。
-- -------------------- ---- ------- ----- -- ----------------- ----------- ----- ----- -- ---------- ------------ - ------------- ------- ----- --- ---- - -- ----- - - ----- -- - --- ---------- ----------- ---------------- - -------------- -------- ------ -
然后在 main
函数中调用这个函数:
-- -------------------- ---- ------- -------------- ----- -- ------ -- ---------- ------------ - --- ------------ - --------------------------------------------- ---- -- ------ --- ---- - ----------------------------------------- --------------------------- --- --- ---- - ---- - --- ----- ----- ----- ----------------- ------ ----------------------------------- -- ------------------ --------------------- -- --- -------- ----- - --------------- --------- - --------- - ----- ----------------- ---------- - ----------------------------------- ------------------ ------------- - -- ---------- ------ -
删除用户
最后,我们需要实现删除用户的逻辑。定义一个函数来删除用户。
async fn delete_user(pool: &MySqlPool, id: i32) -> Result<(), sqlx::Error> { sqlx::query!("DELETE FROM users WHERE id = ?", id) .execute(pool) .await?; Ok(()) }
然后在 main
函数中调用这个函数:
-- -------------------- ---- ------- -------------- ----- -- ------ -- ---------- ------------ - --- ------------ - --------------------------------------------- ---- -- ------ --- ---- - ----------------------------------------- --------------------------- --- ---- - ---- - --- ----- ----- ----- ----------------- ------ ----------------------------------- -- ------------------ --------------------- ------------------ ---------- -- ---------- ------ -
总结
通过以上步骤,我们已经实现了基本的 CRUD 操作。你可以根据需要扩展这个示例,例如增加更多的错误处理、日志记录等功能。希望这个教程对你有所帮助!