【发布时间】:2019-12-22 20:02:17
【问题描述】:
我正在尝试从数据库中删除表视图的 didSelectRowAtIndexPath 方法上的数据,但未删除数据。有时记录会被删除,但有时不会被删除。 显示旧数据。
const char *dbpath = [databasePath UTF8String];
if(sqlite3_open(dbpath, & contactDB) == SQLITE_OK)
{
NSString *deleteSQL = [NSString stringWithFormat:@"delete from userDetails where name = '%@'", _name.text];
NSLog(@"%@:", deleteSQL);
const char *delete_stmt = [deleteSQL UTF8String];
sqlite3_prepare_v2( contactDB, delete_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
_dbStatus.text = @"record is deleted";
} else {
_dbStatus.text = @"record not deleted";
NSLog(@"Error: %s", sqlite3_errmsg(contactDB));
}
sqlite3_close(contactDB);
}
[tableview reloadData];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[resultentArray removeObjectAtIndex:indexPath.row];
NSString *selectedRow1 = [[resultentArray objectAtIndex:indexPath.row]valueForKey:@"name"];
}
【问题讨论】:
-
可能与您的问题无关,但从不使用
stringWithFormat构建查询。将值正确绑定到准备好的语句中。在完成所有准备好的语句后,您还应该调用sqlite3_finalize。
标签: ios objective-c sqlite