On Thu, 1 Aug 2013 21:22:23 -0700 (PDT), ngsbioinformat...@gmail.com 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 sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users