Rust 连接 seekdb 示例程序
本文将介绍如何使用 Rust 和 seekdb 构建一个应用程序,实现创建表、插入数据和查询数据等基本操作。
前提条件
- 您已安装 Rust 工具链(rustup)和 Cargo
- 您已安装 seekdb
操作步骤
- 检查 Rust 和 Cargo 的版本
- 安装必要的依赖
- 获取 seekdb 连接信息
- 修改
config.rs文件中的数据库连接信息 - 运行
main.rs文件 - 在交互式命令行界面进行相应的操作
步骤一:检查 Rust 和 Cargo 的版本
打开终端,运行以下命令检查 Rust 和 Cargo 的版本:
rustc --version
cargo --version
步骤二:创建项目并安装必要的依赖
-
创建一个新的 Rust 项目:
cargo new seekdb_demo
cd seekdb_demo -
使用
cargo安装mysqlcrate:cargo add mysql -
(可选)如果需要使用异步操作,可以安装
mysql_asynccrate:cargo add mysql_async
步骤三:获取 seekdb 连接信息
联系 seekdb 部署人员或者管理员获取相应的数据库连接串。
mysql -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 seekdb 的连接 IP。应该被实际的 IP 替换,也可以使用本地 IP 及 127.0.0.1。$port:提供 seekdb 接端口。应该被实际的端口替换,默认是 2881,在部署 seekdb 时可自定义。$database_name:需要访问的数据库名称。$user_name:提供连接账户。格式:用户名。$password:提供账户密码。
步骤四:修改 main.rs 文件中的数据库连接信息
根据步骤三中的信息修改 main.rs 文件中的数据库连接信息。
-
进入
seekdb_demo项目文件夹。 -
在
main.rs文件中添加或修改数据库连接信息。在
main.rs中添加完整的示例代码如下:use mysql::*;
use mysql::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
const OCEANBASE_CONFIG: &str = "mysql://test_user001@mysql001:password@10.10.10.1:2881/test?charset=utf8mb4";
// Establish connection
println!("Connecting to database...");
let pool = Pool::new(DB_URL)?;
let mut conn = pool.get_conn()?;
println!("Connected successfully!");
// Create table
conn.query_drop(
r"CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)"
)?;
println!("Table created successfully!");
// Insert sample data
conn.exec_batch(
r"INSERT INTO users (name, email) VALUES (?, ?)",
vec![
("Alice", "alice@example.com"),
("Bob", "bob@example.com"),
("Charlie", "charlie@example.com"),
]
)?;
println!("Sample data inserted successfully!");
// Query and display the data
let selected_users = conn
.query_map(
"SELECT id, name, email FROM users",
|(id, name, email)| {
User { id, name, email }
}
)?;
println!("\nCurrent users in database:");
for user in selected_users {
println!("ID: {}, Name: {}, Email: {}", user.id, user.name, user.email);
}
Ok(())
}
// Structure to hold user data
struct User {
id: i32,
name: String,
email: String,
}