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;
}
}