The sqlite3_reset() call is supposedly optional since version 3.7.0 if a statement returned SQLITE_DONE, but I find this is not the case for prepared INSERT and DELETE statements. Stepping those prepared statements does not return an error, but it also does not execute the prepared statement. Calling sqlite3_reset) beforehand, fixes the issues. I invite the developers to check whether the auto-reset feature really works.