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. |