Extend the example

This commit is contained in:
Ivan Ukhov 2015-08-03 16:52:51 -04:00
parent b2e735b627
commit 5fc38054ba
2 changed files with 90 additions and 10 deletions

View File

@ -28,6 +28,8 @@ connection.process("SELECT * FROM users WHERE age > 50", |pairs| {
The same example using prepared statements:
```rust
use sqlite::State;
let connection = sqlite::open(":memory:").unwrap();
connection.execute("
@ -40,21 +42,59 @@ let mut statement = connection.prepare("
statement.bind(1, "Alice").unwrap();
statement.bind(2, 42).unwrap();
assert_eq!(statement.step().unwrap(), sqlite::State::Done);
assert_eq!(statement.step().unwrap(), State::Done);
statement.reset().unwrap();
statement.bind(1, "Bob").unwrap();
statement.bind(2, 69).unwrap();
assert_eq!(statement.step().unwrap(), sqlite::State::Done);
assert_eq!(statement.step().unwrap(), State::Done);
let mut statement = connection.prepare("
SELECT * FROM users WHERE age > 50
").unwrap();
while let sqlite::State::Row = statement.step().unwrap() {
println!("id = {}", statement.read::<i64>(0).unwrap());
println!("name = {}", statement.read::<String>(1).unwrap());
while let State::Row = statement.step().unwrap() {
println!("name = {}", statement.read::<String>(0).unwrap());
println!("age = {}", statement.read::<i64>(1).unwrap());
}
```
The same example using iterators:
```rust
use sqlite::Value;
let connection = sqlite::open(":memory:").unwrap();
connection.execute("
CREATE TABLE users (name TEXT, age INTEGER)
").unwrap();
let mut iterator = connection.prepare("
INSERT INTO users (name, age) VALUES (?, ?)
").unwrap().into_iter().unwrap();
iterator.start(&[
Value::String("Alice".to_string()), Value::Integer(42),
]).unwrap();
iterator.start(&[
Value::String("Bob".to_string()), Value::Integer(69),
]).unwrap();
let mut iterator = connection.prepare("
SELECT * FROM users WHERE age > 50
").unwrap().into_iter().unwrap();
while let Some(row) = iterator.next().unwrap() {
match (&row[0], &row[1]) {
(&Value::String(ref name), &Value::Integer(age)) => {
println!("name = {}", name);
println!("age = {}", age);
},
_ => unreachable!(),
}
}
```

View File

@ -24,6 +24,8 @@
//! The same example using prepared statements:
//!
//! ```
//! use sqlite::State;
//!
//! let connection = sqlite::open(":memory:").unwrap();
//!
//! connection.execute("
@ -36,21 +38,59 @@
//!
//! statement.bind(1, "Alice").unwrap();
//! statement.bind(2, 42).unwrap();
//! assert_eq!(statement.step().unwrap(), sqlite::State::Done);
//! assert_eq!(statement.step().unwrap(), State::Done);
//!
//! statement.reset().unwrap();
//!
//! statement.bind(1, "Bob").unwrap();
//! statement.bind(2, 69).unwrap();
//! assert_eq!(statement.step().unwrap(), sqlite::State::Done);
//! assert_eq!(statement.step().unwrap(), State::Done);
//!
//! let mut statement = connection.prepare("
//! SELECT * FROM users WHERE age > 50
//! ").unwrap();
//!
//! while let sqlite::State::Row = statement.step().unwrap() {
//! println!("id = {}", statement.read::<i64>(0).unwrap());
//! println!("name = {}", statement.read::<String>(1).unwrap());
//! while let State::Row = statement.step().unwrap() {
//! println!("name = {}", statement.read::<String>(0).unwrap());
//! println!("age = {}", statement.read::<i64>(1).unwrap());
//! }
//! ```
//!
//! The same example using iterators:
//!
//! ```
//! use sqlite::Value;
//!
//! let connection = sqlite::open(":memory:").unwrap();
//!
//! connection.execute("
//! CREATE TABLE users (name TEXT, age INTEGER)
//! ").unwrap();
//!
//! let mut iterator = connection.prepare("
//! INSERT INTO users (name, age) VALUES (?, ?)
//! ").unwrap().into_iter().unwrap();
//!
//! iterator.start(&[
//! Value::String("Alice".to_string()), Value::Integer(42),
//! ]).unwrap();
//!
//! iterator.start(&[
//! Value::String("Bob".to_string()), Value::Integer(69),
//! ]).unwrap();
//!
//! let mut iterator = connection.prepare("
//! SELECT * FROM users WHERE age > 50
//! ").unwrap().into_iter().unwrap();
//!
//! while let Some(row) = iterator.next().unwrap() {
//! match (&row[0], &row[1]) {
//! (&Value::String(ref name), &Value::Integer(age)) => {
//! println!("name = {}", name);
//! println!("age = {}", age);
//! },
//! _ => unreachable!(),
//! }
//! }
//! ```
//!