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
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.
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
.