我觉得我已经读了一百万次FMDB的文档。我不知道为什么这个代码不工作 - 我已经尝试过executeUpdate方法和executeMethodWithFormat及其相应的格式,似乎都没有工作。 _dbArray是一个字典数组。这些行将返回正确的值 - 如果我复制并粘贴结果并在终端中运行查询,它将删除记录正常。我错过了一些明显的东西?使用FMDB从SQLite数据库删除行
- (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;
}
http:// novasys。in/2013/11/22/fmdb-implimentation-ios-applications/ – sohil 2016-11-30 17:52:19
http://www.brianjcoleman.com/framework-using-fmdb-to-communicate-with-sqlite-databases/ – sohil 2016-11-30 17:52:30