Как удалить строку в таблице базы данных sqlite?

Я использую fmdb для управления моей базой данных. Я не смог найти ни одного примера для удаления строки из таблицы в fmdb. Я старался

  NSString *sqlStat=@"DELETE from tableName WHERE id=3";    
  FMResultSet *rs = [database executeQuery:sqlStat];

но это не работает, потому что, когда я проверил общее количество записей в таблице, я получаю то же число, что и до выполнения вышеприведенного оператора. Итак, как правильно удалить строку из таблицы с помощью fmdb?

4 ответа

FMDB может быть немного привередливым, если вы не передадите объект как NSNumber. Это поддерживаемый и безопасный способ форматирования запросов.

[db executeUpdate:@"DELETE FROM theTable WHERE id = ?", [NSNumber numberWithInt:myObject.id]];

Вы должны заменить:

... [база данных executeQuery:sqlStat] ...

с:

... [database executeUpdate: sqlStat];

Также попробуйте добавить:

[database beginTransaction];

перед вашим блоком CRUD, и:

[database commit];

после выполнения операции обновления / удаления / вставки.

;)

Я также столкнулся с тем же симптомом. и моя проблема была, я не звонил (и вызвал ошибку "недостаточно памяти")

[db open];

не забудьте сделать это для устранения проблем с fmdb db.traceExecution=YES; db.logsErrors= ДА;

Вам нужно обеспечить все процессы

NSString *query = @"delete from places where published = 1";
const char *sqlStatement = [query UTF8String];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
    // Loop through the results and add them to the feeds array
    while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
        // Read the data from the result row
        NSLog(@"result is here");
    }

    // Release the compiled statement from memory
    sqlite3_finalize(compiledStatement);

}
int numberOfEffectedRow = sqlite3_changes(database);
return numberOfEffectedRow; // get number of effected rows
Другие вопросы по тегам