#ios #objective-c #sqlite #sql-update
#iOS #objective-c #sqlite #sql-обновление
Вопрос:
Это первый раз, когда я столкнулся с инструкцией UPDATE в SQLITE. Основываясь на том, что я нашел, я придумал этот метод, который, ну, не работает) Сам оператор работает нормально, я его проверил. И значения result и SQLITE_OK по какой-то причине равны 0. Итак, где это пошло не так? Спасибо.
- (BOOL) archiveArticle:(Article *) article
{
NSString *sql = [NSString stringWithFormat:@"UPDATE UserArticle SET archived = ? WHERE article_id=? AND user_id=?"];
sqlite3_stmt *update;
int result = sqlite3_prepare_v2(self.db, [sql UTF8String], -1, amp;update, NULL);
NSLog(@"archiveArticle: Before IF %d %d",result, SQLITE_OK);
if (result == SQLITE_OK){
NSLog(@"archiveArticle: Article was archived!");
return true;
}else{
NSLog(@"archiveArticle: Error while creating update statement. %s", sqlite3_errmsg(self.db));
return false;
}
sqlite3_bind_int(update, 1, 1);
sqlite3_bind_int(update, 2 , article.article_id);
sqlite3_bind_int(update, 3 , 16);
char* errmsg;
sqlite3_exec(self.db, "COMMIT", NULL, NULL, amp;errmsg);
if(SQLITE_DONE != sqlite3_step(update))
NSLog(@"Error while updating. %s", sqlite3_errmsg(self.db));
sqlite3_finalize(update);
return false;
}
Ответ №1:
Проблема связана с этой частью кода:
if (result == SQLITE_OK){
NSLog(@"archiveArticle: Article was archived!");
return true;
}else{
NSLog(@"archiveArticle: Error while creating update statement. %s", sqlite3_errmsg(self.db));
return false;
}
Вы возвращаетесь из метода, поэтому оставшийся код не будет выполнен. Итак,
sqlite3_exec(self.db, "COMMIT", NULL, NULL, amp;errmsg);
не будет работать, и данные не будут обновлены.
Комментарии:
1. О, конечно. Я пытаюсь что-то сделать после возвращения. Как глупо с моей стороны)) Большое вам спасибо 🙂