diff --git a/src/cursor.rs b/src/cursor.rs index c4be496..cbcde74 100644 --- a/src/cursor.rs +++ b/src/cursor.rs @@ -11,6 +11,7 @@ pub struct Cursor<'l> { impl<'l> Cursor<'l> { /// Bind values to all parameters. pub fn bind(&mut self, values: &[Value]) -> Result<()> { + self.state = None; try!(self.statement.reset()); for (i, value) in values.iter().enumerate() { try!(self.statement.bind(i + 1, value)); diff --git a/tests/lib.rs b/tests/lib.rs index c3df7d2..801c2dd 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -76,8 +76,11 @@ fn cursor() { let mut cursor = ok!(connection.prepare(statement)).cursor().unwrap(); ok!(cursor.bind(&[Value::Integer(1)])); - assert_eq!(ok!(ok!(cursor.next())), &[Value::Integer(1), - Value::String("Alice".to_string())]); + assert_eq!(ok!(ok!(cursor.next())), &[Value::Integer(1), Value::String("Alice".to_string())]); + assert_eq!(ok!(cursor.next()), None); + + ok!(cursor.bind(&[Value::Integer(1)])); + assert_eq!(ok!(ok!(cursor.next())), &[Value::Integer(1), Value::String("Alice".to_string())]); assert_eq!(ok!(cursor.next()), None); ok!(cursor.bind(&[Value::Integer(42)]));