| extern crate rusqlite; |
| use rusqlite::{Connection, Result}; |
| |
| struct Person { |
| id: i32, |
| name: String, |
| } |
| fn main() -> Result<()> { |
| let conn = Connection::open_in_memory()?; |
| |
| conn.execute( |
| "CREATE TABLE IF NOT EXISTS persons ( |
| id INTEGER PRIMARY KEY, |
| name TEXT NOT NULL |
| )", |
| (), // empty list of parameters. |
| )?; |
| |
| conn.execute( |
| "INSERT INTO persons (name) VALUES (?1), (?2), (?3)", |
| ["Steven", "John", "Alex"].map(|n| n.to_string()), |
| )?; |
| |
| let mut stmt = conn.prepare("SELECT id, name FROM persons")?; |
| let rows = stmt.query_map([], |row| { |
| Ok(Person { |
| id: row.get(0)?, |
| name: row.get(1)?, |
| }) |
| })?; |
| |
| println!("Found persons:"); |
| |
| for person in rows { |
| match person { |
| Ok(p) => println!("ID: {}, Name: {}", p.id, p.name), |
| Err(e) => eprintln!("Error: {e:?}"), |
| } |
| } |
| |
| Ok(()) |
| } |