mirror of
https://github.com/isar/rusqlite.git
synced 2025-11-01 06:18:54 +08:00
5dbfa2850ef3d1880afa3fe6685fbc941435eb31
See comment in libsqlite3-sys/build.rs for details - adding this flag is harmless if it's not present in the header, and not having it can break builds against older SQLite versions.
Rusqlite
Rusqlite is an ergonomic wrapper for using SQLite from Rust. It attempts to expose an interface similar to rust-postgres. View the full API documentation.
extern crate rusqlite;
extern crate time;
use time::Timespec;
use rusqlite::Connection;
#[derive(Debug)]
struct Person {
id: i32,
name: String,
time_created: Timespec,
data: Option<Vec<u8>>
}
fn main() {
let conn = Connection::open_in_memory().unwrap();
conn.execute("CREATE TABLE person (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
time_created TEXT NOT NULL,
data BLOB
)", &[]).unwrap();
let me = Person {
id: 0,
name: "Steven".to_string(),
time_created: time::get_time(),
data: None
};
conn.execute("INSERT INTO person (name, time_created, data)
VALUES (?1, ?2, ?3)",
&[&me.name, &me.time_created, &me.data]).unwrap();
let mut stmt = conn.prepare("SELECT id, name, time_created, data FROM person").unwrap();
let person_iter = stmt.query_map(&[], |row| {
Person {
id: row.get(0),
name: row.get(1),
time_created: row.get(2),
data: row.get(3)
}
}).unwrap();
for person in person_iter {
println!("Found person {:?}", person.unwrap());
}
}
Optional Features
Rusqlite provides several features that are behind Cargo features. They are:
load_extensionallows loading dynamic library-based SQLite extensions.backupallows use of SQLite's online backup API.functionsallows you to load Rust closures into SQLite connections for use in queries. Note: This feature requires SQLite 3.7.3 or later.traceallows hooks into SQLite's tracing and profiling APIs.blobgivesstd::io::{Read, Write, Seek}access to SQL BLOBs. Note: This feature requires SQLite 3.7.4 or later.limitsallows you to set and retrieve SQLite's per connection limits.chronoimplementsFromSqlandToSqlfor various types from thechronocrate.serde_jsonimplementsFromSqlandToSqlfor theValuetype from theserde_jsoncrate.bundleduses a bundled version of sqlite3. This is a good option for cases where linking to sqlite3 is complicated, such as Windows.
Author
John Gallagher, johnkgallagher@gmail.com
License
Rusqlite is available under the MIT license. See the LICENSE file for more info.
Languages
Rust
99.5%
Shell
0.5%