Note that you can compile the sqlite3 library to not do an automatic reset and instead require that you must issue a manual reset in order to transition from the "Not Executing, Done" state to the "Not Executing, Never Executed" state, but there is really no reason for the non-reset state to exist (all it really does it provide a capability to return a different error code if you forget where you are in the execution of a statement).