2014-11-03 94 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

從視圖中刪除將只有當你的看法是不是一個複雜的視圖的原始表中刪除。

舉例說,如果視圖實際上是一個連接,它們只能用於查詢。刪除更新等不會工作