[dependencies]
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] }
tokio = { version = "1", features = ["full"] }
use sqlx::sqlite::SqlitePool;
#[tokio::main]
async fn main() -> Result<(), sqlx::Error> {
let pool = SqlitePool::connect("sqlite:mydb.db").await?;
sqlx::query("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")
.execute(&pool)
.await?;
sqlx::query("INSERT INTO users (name, age) VALUES (?, ?)")
.bind("Alice")
.bind(30)
.execute(&pool)
.await?;
let rows: Vec<(i64, String, i64)> = sqlx::query_as("SELECT id, name, age FROM users")
.fetch_all(&pool)
.await?;
for (id, name, age) in rows {
println!("{}: {} ({})", id, name, age);
}
Ok(())
}
#[derive(Queryable, Insertable)]
#[diesel(table_name = users)]
struct User {
id: i32,
name: String,
age: i32,
}