我需要一些帮助来通过 Tableview 删除数据库中的行。在我的应用程序中,我使用 SKDatabase 文件进行查询。现在当我调用删除查询时它不起作用。下面是我的代码
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
i = indexPath.row;
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[objappdel.sk deleteWhere:[NSString stringWithFormat:@"ID = %d",indexPath.row] forTable:@"Highlights_Table"];
tablstr = [arrayFinal objectAtIndex:indexPath.row];
NSLog(@" %@",tablstr);
[arrayFinal removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
[table1 reloadData];
}
如果我正在使用删除所有数据查询,那么它正在工作,我不知道如何解决这个问题。请帮忙。
删除 SKDatabase.m 中的方法代码
- (void)deleteWhere:(NSString *)where forTable:(NSString *)table
{
NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE %@",
table,where];
NSLog(@" %@",sql);
[self runDynamicSQL:sql forTable:table];
}
- (BOOL)runDynamicSQL:(NSString *)sql forTable:(NSString *)table
{
int result;
NSAssert1(self.dynamic == 1,[NSString stringWithString:@"Tried to use a dynamic function on a static database"],NULL);
sqlite3_stmt *statement;
if (statement = [self prepare:sql])
{
result = sqlite3_step(statement);
}
sqlite3_finalize(statement);
if (result)
{
if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(databaseTableWasUpdated:)])
{
[delegate databaseTableWasUpdated:table];
}
return YES;
NSLog(@"Done");
}
else
{
return NO;
}
}
- (sqlite3_stmt *)prepare:(NSString *)sql
{
const char *utfsql = [sql UTF8String];
NSLog(@" %s",utfsql);
sqlite3_stmt *statement;
if (sqlite3_prepare([self dbh],utfsql,-1,&statement,NULL) == SQLITE_OK)
{
return statement;
}
else
{
return 0;
}
}