pub struct Connection { /* private fields */ }
Expand description
An open connection to a SQLite database.
§Examples
Load a set of rows from the default SQLite database, and iterate over them.
use spin_sdk::sqlite::{Connection, Value};
let db = Connection::open_default()?;
let query_result = db.execute(
"SELECT * FROM users WHERE age >= ?",
&[Value::Integer(min_age)]
)?;
let name_index = query_result.columns.iter().position(|c| c == "name").unwrap();
for row in &query_result.rows {
let name: &str = row.get(name_index).unwrap();
println!("Found user {name}");
}
Use the QueryResult::rows() wrapper to access a column by name. This is simpler and more readable but incurs a lookup on each access, so is not recommended when iterating a data set.
let db = Connection::open_default()?;
let query_result = db.execute(
"SELECT * FROM users WHERE id = ?",
&[Value::Integer(user_id)]
)?;
let name = query_result.rows().next().and_then(|r| r.get::<&str>("name")).unwrap();
Perform an aggregate (scalar) operation over a named SQLite database. The result set contains a single column, with a single row.
use spin_sdk::sqlite::Connection;
let db = Connection::open("customer-data")?;
let query_result = db.execute("SELECT COUNT(*) FROM users", &[])?;
let count = query_result.rows.first().and_then(|r| r.get::<usize>(0)).unwrap();
Delete rows from a SQLite database. The usual Connection::execute() syntax is used but the query result is always empty.
use spin_sdk::sqlite::{Connection, Value};
let db = Connection::open("customer-data")?;
db.execute("DELETE FROM users WHERE age < ?", &[Value::Integer(min_age)])?;
A handle to an open sqlite instance
Implementations§
Source§impl Connection
impl Connection
Sourcepub fn open_default() -> Result<Self, Error>
pub fn open_default() -> Result<Self, Error>
Open a connection to the default database
Source§impl Connection
impl Connection
Source§impl Connection
impl Connection
Source§impl Connection
impl Connection
Sourcepub fn last_insert_rowid(&self) -> i64
pub fn last_insert_rowid(&self) -> i64
The SQLite rowid of the most recent successful INSERT on the connection, or 0 if there has not yet been an INSERT on the connection.