After a statement was executed, a call to sqlite3_reset() brings it back into the original state so that it can be re-executed.
Typically, while the statement itself stays the same, the parameters are changed:
const char *sql = "INSERT INTO MyTable(ID, Name) VALUES (?, ?)";
sqlite3_stmt...