On Thu, 1 Aug 2013 21:22:23 -0700 (PDT), [email protected]
wrote:
>Hi all - I've got sqlite embedded in an iOS app. I have a database with 1
>table, and am creating a prepared select statement with a where clause on 1
>field. In my loop, my order of operations is: sqlite3_bind_text,
>sqlite3_step, sqlite3_reset.
>
>One the first iteration of the loop, sqlite3_step returns SQLITE_ROW and
>all the correct values. On the second and every subsequent iteration,
>sqlite3_step returns SQLITE_DONE. Why is this? I thought I could call
>sqlite3_reset then rebind a variable and called step again. All the
>documentation points to this being correct. Am I missing something?
>
>Ryan
You appear to do
_prepare()
loop
_bind()
_step()
[ if not _DONE use results ]
_reset()
end loop
_reset() resets the statement, so the cursor is invalidated and the
statement is re-initialized. This way you will always only retrieve
* either zero rows (the WHERE clause doesn't match anything)
.. in this case _step() returns no data and status SQLITE_DONE
* or one row (the WHERE clause matches one or more rows)
Perhaps this is not what you meant to do?
Typically, re-using a prepared statement has this structure:
_prepare()
loop 1 until bind list exhausted
_bind()
loop 2 until SQLITE_DONE
_step()
[ if not _DONE use results ]
end loop 2
_reset()
end loop 1
_finalize()
But perhaps I don't understand your problem?
--
Groet, Cordialement, Pozdrawiam, Regards,
Kees Nuyt
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users