Crate fce_sqlite_connector[−][src]
Interface to SQLite.
Example
Open a connection, create a table, and insert some rows:
let connection = sqlite::open(":memory:").unwrap(); connection .execute( " CREATE TABLE users (name TEXT, age INTEGER); INSERT INTO users VALUES ('Alice', 42); INSERT INTO users VALUES ('Bob', 69); ", ) .unwrap();
Select some rows and process them one by one as plain text:
connection .iterate("SELECT * FROM users WHERE age > 50", |pairs| { for &(column, value) in pairs.iter() { println!("{} = {}", column, value.unwrap()); } true }) .unwrap();
The same query using a prepared statement, which is much more efficient than the previous technique:
use sqlite::State; let mut statement = connection .prepare("SELECT * FROM users WHERE age > ?") .unwrap(); statement.bind(1, 50).unwrap(); while let State::Row = statement.next().unwrap() { println!("name = {}", statement.read::<String>(0).unwrap()); println!("age = {}", statement.read::<i64>(1).unwrap()); }
The same query using a cursor, which is a wrapper around a prepared statement providing the concept of row and featuring all-at-once binding:
use sqlite::Value; let mut cursor = connection .prepare("SELECT * FROM users WHERE age > ?") .unwrap() .cursor(); cursor.bind(&[Value::Integer(50)]).unwrap(); while let Some(row) = cursor.next().unwrap() { println!("name = {}", row[0].as_string().unwrap()); println!("age = {}", row[1].as_integer().unwrap()); }
Structs
Connection | A database connection. |
Cursor | An iterator over rows. |
DBExecDescriptor | |
DBOpenDescriptor | |
DBPrepareDescriptor | |
Error | An error. |
OpenFlags | Flags for opening a database connection. |
Statement | A prepared statement. |
Enums
State | A state of a prepared statement. |
Type | A data type. |
Value | A typed value. |
Traits
Bindable | A type suitable for binding to a prepared statement. |
Readable | A type suitable for reading from a prepared statement. |
Functions
Type Definitions
Result | A result. |