vendredi 10 juillet 2015

Record shown even after successful Sqlite deletion

Something crazy is happening with me or I am stupidly doing something wrong. I am deleting a record from Sqlite table which ends up with success. But when I again launch the app and get all, the record is still there !!

In ViewController :

[tableMessage beginUpdates];
                     [[CommonModel shared]DeleteMessage:message.MessageId];
                     [arrMessages removeObjectAtIndex:indexPath.row];
                     [tableMessage deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationNone];
                     [tableMessage endUpdates]; 

Sqlite deletion functions :

- (void)DeleteMessage:(NSString*)messageId{

    sqlite3_stmt *statement = nil;

    @try {

        @synchronized(self)
        {
            const char *sql = "Delete from Message where MessageId = ?";

                sqlite3_bind_text(statement, 1, [messageId UTF8String], -1, SQLITE_TRANSIENT);

            if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {

            }
            else
            {
                NSLog(@"Error while preparing for Message Delete");
            }

            if(sqlite3_step(statement) == SQLITE_DONE)
            {
               // Record always gets successfully deleted
                NSLog(@"Success on Message Deletion");
                [self DeleteMessageUsers:messageId];
            }
            else
            {
                NSLog(@"Error while Deleting Message");
            }
        }
    }
    @catch (NSException *exception) {

        NSLog(@"Error in DeleteMessages : %@", exception.description);
    }
    @finally {

        sqlite3_finalize(statement);
    }
}

- (void)DeleteMessageUsers:(NSString*)messageId{

    sqlite3_stmt *statement = nil;

    @try {

        @synchronized(self)
        {
            const char *sql = "Delete from MessageUser where MessageId = ?";

            sqlite3_bind_text(statement, 1, [messageId UTF8String], -1, SQLITE_TRANSIENT);

            if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {

            }
            else
            {
                NSLog(@"Error while Deleting MessageUser");
            }

            if(sqlite3_step(statement) == SQLITE_DONE)
            {
                // Record always gets successfully deleted
                NSLog(@"Success on MessageUser Deletion");
            }
            else
            {
                NSLog(@"Error while Deleting MessageUser");
            }
        }
    }
    @catch (NSException *exception) {

        NSLog(@"Error in DeleteMessageUser : %@", exception.description);
    }
    @finally {

        sqlite3_finalize(statement);
    }
}

Aucun commentaire:

Enregistrer un commentaire