描述
将准备好的语句对象重置为初始状态,准备重新执行。使用sqlite3_bind_*()API绑定的值的任何SQL语句变量都保留其值。使用sqlite3_clear_bindings重置绑定。
C / C ++语法
int sqlite3_reset(sqlite3_stmt *pStmt); |
PB语法
FUNCTION sqlite3_reset ( _ BYVAL hStmt AS DWORD, _ ) AS LONG |
参数
pStmt
[in]准备好的语句句柄。
返回值
如果最近调用sqlite3_step(S)对于准备好的语句S返回SQLITE_ROW或SQLITE_DONE,或者如果sqlite3_step(S)从未在S上调用,则sqlite3_reset(S)返回SQLITE_OK。
如果最近调用sqlite3_step(S)对于准备好的语句S表示错误,则sqlite3_reset(S)返回相应的错误代码。
C ++实现代码
/*
** Terminate the current execution of an SQL statement and reset it
** back to its starting state so that it can be reused. A success code from
** the prior execution is returned.
**
** This function sets the error code and string returned by
** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
*/
SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt){
int rc;
if( pStmt==0 ){
rc = SQLITE_OK;
}else{
Vdbe *v = (Vdbe*)pStmt;
sqlite3_mutex_enter(v->db->mutex);
rc = sqlite3VdbeReset(v);
sqlite3VdbeRewind(v);
assert( (rc & (v->db->errMask))==rc );
rc = sqlite3ApiExit(v->db, rc);
sqlite3_mutex_leave(v->db->mutex);
}
return rc;
}