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 –
我看到了,我不清楚「是否必須完成每個準備好的聲明」,包括那些未成功準備的聲明。 –