Crates.io | sqlite |
lib.rs | sqlite |
version | |
source | src |
created_at | 2015-05-28 21:22:02.092461+00 |
updated_at | 2025-02-16 12:11:11.660331+00 |
description | The package provides an interface to SQLite. |
homepage | https://github.com/stainless-steel/sqlite |
repository | https://github.com/stainless-steel/sqlite |
max_upload_size | |
id | 2245 |
Cargo.toml error: | TOML parse error at line 38, column 1 | 38 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
The package provides an interface to SQLite.
Open a connection, create a table, and insert a few rows:
let connection = sqlite::open(":memory:").unwrap();
let query = "
CREATE TABLE users (name TEXT, age INTEGER);
INSERT INTO users VALUES ('Alice', 42);
INSERT INTO users VALUES ('Bob', 69);
";
connection.execute(query).unwrap();
Select some rows and process them one by one as plain text, which is generally not efficient:
let query = "SELECT * FROM users WHERE age > 50";
connection
.iterate(query, |pairs| {
for &(name, value) in pairs.iter() {
println!("{} = {}", name, value.unwrap());
}
true
})
.unwrap();
Run the same query but using a prepared statement, which is much more efficient than the previous technique:
use sqlite::State;
let query = "SELECT * FROM users WHERE age > ?";
let mut statement = connection.prepare(query).unwrap();
statement.bind((1, 50)).unwrap();
while let Ok(State::Row) = statement.next() {
println!("name = {}", statement.read::<String, _>("name").unwrap());
println!("age = {}", statement.read::<i64, _>("age").unwrap());
}
Run the same query but using a cursor, which is iterable:
let query = "SELECT * FROM users WHERE age > ?";
for row in connection
.prepare(query)
.unwrap()
.into_iter()
.bind((1, 50))
.unwrap()
.map(|row| row.unwrap())
{
println!("name = {}", row.read::<&str, _>("name"));
println!("age = {}", row.read::<i64, _>("age"));
}
Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.md.