0

I am new in iOS app. In my iPhone app, I have a database type sqlite (data.sqlite) and some tables in there (just call table: A, B, C,...) I got the problem when I try to update data to tables: table A can update successfully on simulator and iPhone device. But table B just can update on simulator, cannot update on iPhone device (after update, it show NEW data, but if really closed app - double click home button, and close app. And then open app again, the data is OLD data)

This code is for init database

- (id)init {
    self = [super init];

    NSString *bundelFilePath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"sqlite"];
    NSString *dbPath = [LIBRARY_DIR stringByAppendingPathComponent:@"data.sqlite"];

    //New version
    if ( ![[NSFileManager defaultManager] fileExistsAtPath:dbPath] ) {
        [[NSFileManager defaultManager] copyItemAtPath:bundelFilePath toPath:dbPath error:nil];

        _database = [FMDatabase databaseWithPath:dbPath];
        [_database open];
    }

    return self;
}

This code is for update

- (void)updateDetails:(NSMutableArray *)details {

    @synchronized(self) {
        [_database beginTransaction];

        for (int i = 0; i< details.count; i++) {
            B *b = [details objectAtIndex:i];

            NSString *sql = [NSString stringWithFormat:@"UPDATE B SET display_order=%d WHERE columnIdx=%d", i, b.colIdx];

            [_database executeUpdate:sql];
        }

        [_database commit];
    }
}

I use the same code for update table A, and table A is update successfully on device and simulator. But table B get problem. Please help. Thank you.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Bentley
  • 143
  • 10

1 Answers1

0

Ty replacing:

NSString *sql = [NSString stringWithFormat:@"UPDATE B SET display_order=%d WHERE columnIdx=%d", i, b.colIdx];

with:

NSString *sql = [NSString stringWithFormat:@"UPDATE B SET display_order=? WHERE columnIdx=?", [NSNumber numberWithInt:i], [NSNumber numberWithInt:b.colIdx]];

you have somes numbers objects as:

[NSNumber numberWithFloat:floatNumber];

[NSNumber numberWithDouble:doubleNumber];
Luis Mejías
  • 301
  • 2
  • 10