Setting user_version in sqlite

后端 未结 2 1222
清歌不尽
清歌不尽 2021-01-03 07:25

I have seen other questions on here about reading the user_version, and that seems to be working fine for me. However I\'m trying to use sqlite in FMDB to set my version nu

相关标签:
2条回答
  • 2021-01-03 07:45

    If you need to set PRAGMA user_version use:

    [self.db setUserVersion:yourUserVersion]; // yourUserVersion is of uint32_t type
    

    To read current user_version user

    [self.db userVersion];                   // returned value is of uint32_t type
    

    FMDB encapsulate it since 2013 so you don't have to deal with it yourself.

    Documentation:

    http://ccgus.github.io/fmdb/html/Categories/FMDatabase+FMDatabaseAdditions.html

    PS: @HalR I think you can accept my answer as is it probably more useful for visitor searching for "how to set user_version PRAGMA" and it also solves your problem with neater solution as well.

    0 讨论(0)
  • 2021-01-03 08:06

    I was about to post a bounty when I figured out the issue. And as often happens, I was just being a bonehead

    I was doing executeQuery where I should have been doing executeUpdate

    _db = [self openDatabase];
    [_db executeUpdate:[StudentController creationString]];
    [_db executeUpdate:[ReadingController creationString]];
    [_db executeUpdate:[SessionController creationString]];
    NSLog(@"User version is %i", userVersion);
    NSString *query = [NSString stringWithFormat:@"PRAGMA USER_VERSION = %i", userVersion];
    [_db executeQuery:query];
    

    should instead be:

    _db = [self openDatabase];
    [_db executeUpdate:[StudentController creationString]];
    [_db executeUpdate:[ReadingController creationString]];
    [_db executeUpdate:[SessionController creationString]];
    NSLog(@"User version is %i", userVersion);
    NSString *query = [NSString stringWithFormat:@"PRAGMA USER_VERSION = %i", userVersion];
    [_db executeUpdate:query];
    

    executing a Pragma is NOT a query, executeQuery doesn't do anything with it. It is instead in the same category as UPDATE, INSERT, and DELETE.

    0 讨论(0)
提交回复
热议问题