3
使用sqlite3_prepare_v2
时,是否需要在每个路径中调用sqlite3_finalize
,或者只有在成功时才调用sqlite3_finalize
?例如,下面是我使用的斯威夫特方法的代码:您是否需要完成失败的预备声明?
let prepare = sqlite3_prepare_v2(db!, SQLString, -1, &delete, nil)
if (prepare == SQLITE_OK){
if !(sqlite3_step(delete) == SQLITE_DONE){
sqlite3_finalize(delete) // *
sqlite3_close(db)
return
}
} else {
// **
sqlite3_close(db)
return
}
sqlite3_finalize(delete)
sqlite3_close(db)
// rest of method continues if it didn't fail
*我想我需要在这里调用它,因为成功地制备了声明,即使它没有运行成功
**但是我需要在这里打电话吗?
请参阅https://www.sqlite.org/c3ref/finalize.html –
我看到了,我不清楚“是否必须完成每个准备好的声明”,包括那些未成功准备的声明。 –