2014-11-03 99 views
1

我使用sqlite数据库时,我在tableview中显示数据,当我删除tableview中的数据时,数据也应该删除在我的数据库表中。我写查询删除,但它不会删除我的sqlitedb表中。删除数据库中的数据时出现问题

这里是我的代码

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (editingStyle == UITableViewCellEditingStyleDelete) 
{ 

    if (btnCliked==NO) 
    { 

     [videoTitleArrya removeObjectAtIndex:indexPath.row]; 
     [videoImagesLinksDataArray removeObjectAtIndex:indexPath.row]; 
     NSLog(@"videoTitleArrya%@",videoTitleArrya); 
     NSLog(@"videoImagesLinksDataArray%@",videoImagesLinksDataArray); 
     NSUInteger temp=[[videoTitleArrya objectAtIndex:indexPath.row] intValue]; 
     [self deleteDataBaseRow:temp]; 

     } 


    [tableView reloadData]; 
} 
else if (editingStyle == UITableViewCellEditingStyleInsert) 
{ 

} 
} 

-(void)deleteDataBaseRow:(NSUInteger)RowNumber 

    { 
     if (sqlite3_open([dbPathString UTF8String], &DB)==SQLITE_OK) 
     { 
    NSLog(@"dataBaseOpen"); 
    NSString *Query = [NSString stringWithFormat:@"DELETE FROM mytablename where 
    id ='%@'",RowNumber]; 

    const char * deletequery = [Query UTF8String]; 
    if (sqlite3_prepare_v2(DB, deletequery, -1, &statement, NULL) != SQLITE_OK) 
    { 

    NSLog(@"deletedSuccessfully"); 

    } 
    sqlite3_close(DB); 

}} 
+0

显示表定义。 – 2014-11-03 10:06:25

回答

1

从你的代码我想照顾一些点,如果所有其他的东西都适当,它会从数据库中删除记录。

看这句话:

NSString *Query = [NSString stringWithFormat:@"DELETE FROM mytablename where 
id ='%@'",RowNumber]; 

在这里,您使用%@运营商int变量RowNumber。替换上述符合这一

NSString *strRowNumber = [NSString stringWithFormat:@"%d",RowNumber]; 
NSString *Query = [NSString stringWithFormat:@"DELETE FROM mytablename where id ='%@'",strRowNumber]; 

第二件事,观察低于行:

if (sqlite3_prepare_v2(DB, deletequery, -1, &statement, NULL) != SQLITE_OK) 
{ 
    NSLog(@"deletedSuccessfully");  
} 

这里有打印NSLog!= SSQLITE_OK。因此,上面的逻辑表明,当从表格中删除行时发生错误时,您将显示成功的消息。这是一个矛盾,如果你在上述条件下做了任何事情,而不是因为你的比较是错误的而不会生效。

替换上述条件与以下:

if (sqlite3_prepare_v2(database, query_stmt, -1, &statement, NULL) == SQLITE_OK) { 
    if (sqlite3_step(statement) == SQLITE_DONE) { 
     sqlite3_reset(statement); 
    } 
    else { 
     const char *error = sqlite3_errmsg(database); 
     strError = [NSString stringWithUTF8String:error]; 
     NSLog(@"Error : %@",strError); 
    } 
} else { 
    NSLog(@"Error while deleting record"); 
} 
0

从视图中删除将只有当你的看法是不是一个复杂的视图的原始表中删除。

举例说,如果视图实际上是一个连接,它们只能用于查询。删除更新等不会工作