Я использую Sqlite3 в своем приложении для iPhone, я получал некоторые нежелательные откаты, по-видимому, случайным образом, однако я не знаю, связано ли это с тем, что я не завершаю утверждения с помощью sqlite3_finalize
, поскольку, насколько я знаю, sqlite3_exec
заботится об этом.
Также я нашел несколько SELECT с sqlite3_prepare_v2
, которые я не завершил, поэтому я знаю, что должен завершить их, однако я должен сделать то же самое с теми, что в sqlite3_exec
?
Один из примеров моих заявлений:
NSString *query=@"UPDATE books SET title='newName' WHERE id='21';";
if ((result=sqlite3_open([database UTF8String], &_database))==SQLITE_OK) {
result=sqlite3_exec(_database, [query UTF8String],NULL,NULL,&errorMsg);
if (result!=SQLITE_OK) {
printf("\n%s",errorMsg);
sqlite3_free(errorMsg);
}
sqlite3_close(_database);
}
Должен ли я sqlite3_finalize(result)
перед закрытием базы данных?