Я чувствую, что прочитал документы по FMDB миллион раз. я не уверен, почему этот код не работает - я пробовал метод executeUpdate и executeMethodWithFormat и их соответствующие форматы, похоже, не работают. _dbArray - это массив словарей. эти строки возвращают правильные значения - если я копирую и вставляю результаты и запускаю запрос в терминале, он удаляет запись в порядке. я что-то упускаю очевидное?
- (IBAction)deleteDbEntry:(id)sender {
// get selected row
NSInteger row = [_dataTable selectedRow];
// get the entry number
NSString *idToDelete = [[_dbArray objectAtIndex:row] valueForKey:@"entryColumn"];
// open DB for writing
if (![db open]) {
[db open];
}
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", idToDelete];
// close DB
if ([db open]) {
[db close];
}
[_dataTable reloadData];
return;
}
ОБНОВЛЕНИЕ: я принял ваши предложения, и он все еще не работает, и я не уверен, почему. открытие и закрытие БД происходит сейчас в другом месте (спасибо @ccgus), и я преобразовываю строку в NSNumber (спасибо @bryanmac). NSLog(@"myNumber is %@", myNumber);
вызов возвращает правильный номер, и я могу подтвердить, что удаление не происходит. NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
сообщает об отсутствии ошибок (Error 0: (null)
). я также пробовал:
[db executeUpdateWithFormat:@"DELETE FROM tbl1 WHERE entry = %@", myNumber];
и
[db executeUpdate:@"DELETE FROM tbl1 WHERE id = ?", [NSNumber numberWithInt:myNumber]];
первый кажется, что он должен работать, но я подтвердил, что он не удаляет строку. вторые ошибки у меня с "несовместимым преобразованием целочисленных в указатель". что мне не хватает?
- (IBAction)deleteDbEntry:(id)sender {
// get selected row
NSInteger row = [_dataTable selectedRow];
// get the entry number
NSString *idToDelete = [[_dbArray objectAtIndex:row] valueForKey:@"entryColumn"];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *myNumber = [f numberFromString:idToDelete];
NSLog(@"myNumber is %@", myNumber);
[db executeUpdate:@"DELETE FROM tbl1 WHERE entry = ?", myNumber];
NSLog(@"Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
[_dataTable reloadData];
return;
}