int sqlite3_reset(sqlite3_stmt *pStmt);
sqlite3_reset() 函数用于将一个 准备好的语句 对象重置回其初始状态,准备重新执行。任何使用 sqlite3_bind_*() API 绑定值的 SQL 语句变量将保留其值。使用 sqlite3_clear_bindings() 重置绑定。
sqlite3_reset(S) 接口将 准备好的语句 S 重置回其程序的开头。
sqlite3_reset(S) 的返回值指示准备好的语句 S 的先前评估是否成功完成。如果 sqlite3_step(S) 从未在 S 上调用过,或者如果 sqlite3_step(S) 自上次调用 sqlite3_reset(S) 后未调用过,则 sqlite3_reset(S) 将返回 SQLITE_OK。
如果针对 准备好的语句 S 的最近一次 sqlite3_step(S) 调用指示发生错误,则 sqlite3_reset(S) 返回相应的 错误代码。如果先前没有错误,但重置准备好的语句的过程导致了新的错误,则 sqlite3_reset(S) 接口也可能会返回 错误代码。例如,如果带有 RETURNING 子句的 INSERT 语句只执行了一次,则该 sqlite3_step(S) 的调用可能会返回 SQLITE_ROW,但整个语句仍可能失败,并且 sqlite3_reset(S) 调用可能会返回 SQLITE_BUSY,因为锁定约束阻止数据库更改提交。因此,即使先前的 sqlite3_step(S) 调用没有指示问题,应用程序也必须检查 sqlite3_reset(S) 的返回值。
sqlite3_reset(S) 接口不会更改 准备好的语句 S 上任何 绑定 的值。