【发布时间】:2021-11-03 16:13:06
【问题描述】:
为了在 C++ 中提交一个 sqlite 查询,我们需要创建一个sqlite3_stmt,通过sqlite3_prepare_v2、sqlite3_bind_ 潜在值将其准备到语句中,然后通过它sqlite3_step。
现在,在一个函数中,例如执行两个单独的 sqlite 查询,我可以通过再次调用 sqlite3_prepare_v2 来重复使用相同的 sqlite3_stmt,还是需要事先明确地 sqlite3_reset 声明?
例如
void mySqliteFunction() {
sqlite3_stmt* stmt;
int rc;
rc = sqlite3_prepare_v2(<connection>, <sql string>, ..., &stmt, ...);
rc = sqlite3_step(stmt);
if (rc == SQLITE_OK) {
rc = sqlite3_prepare_v2(<connection>, <other sql string>, ..., &stmt, ...); // is this valid?
rc = sqlite3_step(stmt);
}
rc = sqlite3_finalize(stmt);
return;
}
【问题讨论】:
-
为什么准备一个语句然后立即丢弃它?
-
@jarmod 谢谢,我忘记了伪代码中的
step并相应地更新了我的问题。你现在明白我的意思了吗?