Keith, On Mon, Jun 4, 2018 at 12:35 PM, Keith Medcalf <kmedc...@dessus.com> wrote: > > #include "sqlite3.h" > #include <stdio.h> > > void main(int argc, char** argv) > { > sqlite3* db = 0; > sqlite3_stmt* stmt = 0; > char* rest = 0; > int rc = 0; > int value = 0; > sqlite3_open(":memory:", &db); > rc = sqlite3_prepare_v2(db, "select value from generate_series where > start=1 and stop=10;", -1, &stmt, (void*)&rest); > if (rc != SQLITE_OK) > { > printf("Error %d during prepare\n", rc); > return; > } > printf("\nLoop 1, no reset, reset at 5\n"); > for (;;) > { > rc = sqlite3_step(stmt); > if (rc == SQLITE_DONE | value == 5) > { > printf("!\n"); > rc = sqlite3_reset(stmt); > printf("sqlite3_reset returns %d\n", rc); > break; > } > if (rc == SQLITE_ROW) > { > value = sqlite3_column_int(stmt, 0); > printf("%d ", value); > continue; > } > printf("Error during stepping %d\n", rc); > rc = sqlite3_reset(stmt); > printf("sqlite3_reset returns %d\n", rc); > break; > } > printf("\nLoop 2, After Reset\n"); > for (;;) > { > rc = sqlite3_step(stmt); > if (rc == SQLITE_DONE) > { > printf("!\n"); > // rc = sqlite3_reset(stmt); > // printf("sqlite3_reset returns %d\n", rc); > break; > } > if (rc == SQLITE_ROW) > { > value = sqlite3_column_int(stmt, 0); > printf("%d ", value); > continue; > } > printf("Error during stepping %d\n", rc); > rc = sqlite3_reset(stmt); > printf("sqlite3_reset returns %d\n", rc); > break; > } > printf("\nLoop 3, No Reset, Got SQLITE_DONE\n"); > for (;;) > { > rc = sqlite3_step(stmt); > if (rc == SQLITE_DONE) > { > printf("!\n"); > rc = sqlite3_reset(stmt); > printf("sqlite3_reset returns %d\n", rc); > break; > } > if (rc == SQLITE_ROW) > { > value = sqlite3_column_int(stmt, 0); > printf("%d ", value); > continue; > } > printf("Error during stepping %d\n", rc); > rc = sqlite3_reset(stmt); > printf("sqlite3_reset returns %d\n", rc); > break; > } > } > > 2018-06-04 11:32:12 MinGW [D:\work] >>test > > Loop 1, no reset, reset at 5 > 1 2 3 4 5 ! > sqlite3_reset returns 0 > > Loop 2, After Reset > 1 2 3 4 5 6 7 8 9 10 ! > > Loop 3, No Reset, Got SQLITE_DONE > 1 2 3 4 5 6 7 8 9 10 ! > sqlite3_reset returns 0
I will try without this call tonight when I'm back from work and let you know. But if the system have an older version of SQLite this code will break right? Thank you. > > > --- > The fact that there's a Highway to Hell but only a Stairway to Heaven says a > lot about anticipated traffic volume. > > >>-----Original Message----- >>From: sqlite-users [mailto:sqlite-users- >>boun...@mailinglists.sqlite.org] On Behalf Of Keith Medcalf >>Sent: Monday, 4 June, 2018 11:25 >>To: SQLite mailing list >>Subject: Re: [sqlite] Reset the cursor >> >> >>Note also that you do not need to do an sqlite3_reset after >>sqlite3_step returns SQLITE_DONE as reset is called automatically the >>next time you call sqlite3_step. You only need to call sqlite3_reset >>if you want to reset the statement before all the rows have been >>retrieved (this is documented somewhere, and I believe there is a >>compile time #define to turn off the auto-reset). Yes, it is >>documented in the sqlite3_step documentation >> >>"For all versions of SQLite up to and including 3.6.23.1, a call to >>sqlite3_reset() was required after sqlite3_step() returned anything >>other than SQLITE_ROW before any subsequent invocation of >>sqlite3_step(). Failure to reset the prepared statement using >>sqlite3_reset() would result in an SQLITE_MISUSE return from >>sqlite3_step(). But after version 3.6.23.1 (2010-03-26, >>sqlite3_step() began calling sqlite3_reset() automatically in this >>circumstance rather than returning SQLITE_MISUSE. This is not >>considered a compatibility break because any application that ever >>receives an SQLITE_MISUSE error is broken by definition. The >>SQLITE_OMIT_AUTORESET compile-time option can be used to restore the >>legacy behavior." >> >>Neither the automatic nor the manual sqlite3_reset reset any bindings >>-- if you want to do this I believe you must call the >>sqlite3_clear_bindings() >> >>--- >>The fact that there's a Highway to Hell but only a Stairway to Heaven >>says a lot about anticipated traffic volume. >> >> >>>-----Original Message----- >>>From: sqlite-users [mailto:sqlite-users- >>>boun...@mailinglists.sqlite.org] On Behalf Of Keith Medcalf >>>Sent: Monday, 4 June, 2018 11:06 >>>To: SQLite mailing list >>>Subject: Re: [sqlite] Reset the cursor >>> >>> >>>>Currently running w/MSVC 2010 under Win 8.1. >>> >>>>I also presume you are testing under the latest SQLite source? >>> >>>Yes, I believe so ... >>>SQLite 3.24.0 2018-06-02 19:14:58 >>>1ecb3aa13de5c8dc611b814ff34010de0bd90aae73d88aa37a59c4627be4alt2 >>> >>>Using GCC (MinGW-w64 8.1.0) on Windows 10 Pro for Workstations >>>version 1803 build 17134.81 (current) >>> >>>MSVC (the one I have, I think VS 2008) also works fine ... though >>the >>>.dll is still compiled with GCC MinGW-w64 8.1.0 (with -O3 and then >>>some). >>> >>>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version >>15.00.21022.08 >>>for 80x86 >>>Copyright (C) Microsoft Corporation. All rights reserved. >>> >>>test.c >>>Microsoft (R) Incremental Linker Version 9.00.21022.08 >>>Copyright (C) Microsoft Corporation. All rights reserved. >>> >>>/out:test.exe >>>test.obj >>>sqlite3.lib >>> >>> >>>2018-06-04 10:59:24 MinGW [D:\work] >>>>test.exe >>> >>>Loop 1, no reset >>>1 2 3 4 5 6 7 8 9 10 ! >>>sqlite3_reset returns 0 >>> >>>Loop 2, after reset >>>1 2 3 4 5 6 7 8 9 10 ! >>>sqlite3_reset returns 0 >>> >>>--- >>>The fact that there's a Highway to Hell but only a Stairway to >>Heaven >>>says a lot about anticipated traffic volume. >>> >>> >>> >>> >>>_______________________________________________ >>>sqlite-users mailing list >>>sqlite-users@mailinglists.sqlite.org >>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> >> >> >>_______________________________________________ >>sqlite-users mailing list >>sqlite-users@mailinglists.sqlite.org >>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users