我覺得我已經讀了一百萬次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