2012-05-16 4 views
1
-(void) deletedata:(id) sender 
{ 
    if(deleteStmt == nil) 
    { 
     const char *sql = "delete from cosmicnumber where name='%@' "; 
     if(sqlite3_prepare_v2(db2, sql, -1, &deleteStmt, NULL) != SQLITE_OK) 
      NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(db2)); 

     NSLog(@"%@",strNam); 
    } 

    //When binding parameters, index starts from 1 and not zero. 
    sqlite3_bind_text(deleteStmt, 1, [strNam UTF8String], -1, SQLITE_TRANSIENT); 

    if (SQLITE_DONE != sqlite3_step(deleteStmt)) 
     NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(db2)); 

    sqlite3_reset(deleteStmt); 
} 

답변

0

sqlite로 연결하기 위해 여기에서 사용하는 것이 무엇입니까 ?? 즉, coredata를 사용하면 작은 논리로 코드를 쉽게 사용할 수 있습니까?

같은 ...

-(void) deleteAllData { 

    NSManagedObjectContext *moc = appDelegate.managedObjectContext;///your data which store in coredata 

    //---------------Fetching and Deleting Category--------- 
    NSFetchRequest *fetchRequest; 
    NSEntityDescription *entity; 
    NSArray *arrobjects; 
    NSError *error; 
    //---------------Fetching and Deleting ITems--------- 
    fetchRequest = [[NSFetchRequest alloc] init]; 
    entity = [NSEntityDescription entityForName:@"yourEntity" inManagedObjectContext:moc]; ///use your entity name.. 
    [fetchRequest setEntity:entity]; 

    arrobjects = [moc executeFetchRequest:fetchRequest error:nil];//arrobjects is array which stor youe another array or record which you want to delete 

    for (NSManagedObject *managedObject in arrobjects) { 

     [moc deleteObject:managedObject]; 
    } 

    error = nil; 
    [moc save:&error]; 

} 

reloadData 방법

[yourTable reloadData]; 

희망이 도움이 당신에게 .. :

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

    if (sqlite3_open([[objdelegate getDBPath] UTF8String], &dbtest) == SQLITE_OK){ 

     NSString *deleteSQL =[NSString stringWithFormat:@"DELETE from test where test_Id=\"%@\"",[objdelegate.listOfTestId objectAtIndex:indexPath.row]]; 

     NSLog(@"Query : %@",deleteSQL); 

     const char *delete_stmt=[deleteSQL UTF8String]; 

     sqlite3_prepare_v2(dbtest, delete_stmt, -1, &stmt, NULL); 

     if(sqlite3_step(stmt) == SQLITE_DONE) 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Delete" message:@"Record Deleted..!!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

      [alert show]; 
      [alert release]; 
     } 
     else 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Delete" message:@"Record Not Deleted..!!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

      [alert show]; 
      [alert release]; 
     } 
    } 

} 
[self getdata]; // Here Call your main getdata function from where you are fetching your data from database 
[tableView reloadData]; 
} 
+0

삭제 데이터베이스에 대한 .. 희망이 .. –

+0

고맙습니다 코멀을 문제를 해결할 것입니다, 그것은 작동하지만,하지에의) tableView commitEditingStyle : (UITableViewCellEditingStyle) editingStyle forRowAtIndexPath : (NSIndexPath *) indexPath입니다. 그것은 내가 행에서 찍은 버튼에 대한 작업이지만 문제는 그것이 마지막 행을 삭제할 때마다 첫 번째 행을 선택합니다. – garry

+0

이 코드가 작동한다면 내 대답을 upvote. 현재 인덱스 값을 가져 오지 않는다고 생각합니다. 현재 인덱스를 가져온 다음 위의 코드에서 해당 인덱스를 전달해야합니다. –

0

아마,이 뜻이 다시로드 테이블 도와주세요. 여기서 _allDownloadedSongs는 테이블을 채우는 배열이고 deleteRowFromDatabase는 array, database 및 talbeView에서 특정 행을 삭제하는 메소드입니다. (jQuery과 * : (무효)있는 tableView -

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *strQuery; 
    NSString *deleteRow; 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
    [tblView beginUpdates]; 
     NSMutableDictionary *dic = (NSMutableDictionary *)[_allDownloadedSongs objectAtIndex:indexPath.row]; 
     deleteRow = [dic valueForKey:@"Id"]; 
     [self deleteRowFromDatabase:deleteRow]; 
     [_allDownloadedSongs removeObjectAtIndex:indexPath.row]; 
    [tblView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade]; 
    [tblView endUpdates]; 
    } 
} 

// 그리고이 코드를 시도

- (void)deleteRowFromDatabase:(NSString *)deleteRow 
{ 
    AppDelegate *obj = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 
    NSString *strQuery = [NSString stringWithFormat:@"DELETE FROM DownloadedSongs WHERE Id=%d", rowId]; 
    [obj InsUpdateDelData:strQuery]; 
} 
관련 문제