首页 > 解决方案 > sqlite3_step 失败时是否需要调用 sqlite3_finalize

问题描述

我有一些像下面这样的情况

sqlite3_bind_text(stmt, 12,"test",4,SQLITE_TRANSIENT);
int retv = sqlite3_step(stmt);
if (retv != SQLITE_DONE) {
   throw "Sql Exception"
}

sqlite3_finalize(stmt);

所以我的问题是,是否需要在抛出异常之前调用 sqlite3_finalize,我认为如果 sqlite3_step 中有任何错误,它将在内部清除 stmt

标签: sqlite

解决方案


文档说:

应用程序必须完成每个准备好的语句以避免资源泄漏

所以是的,你必须打电话sqlite3_finalize


推荐阅读