Я понял это по вдохновению newtover, покопавшись в FMDB и перечитав документацию sqlite3 (на мой взгляд, она все еще очень расплывчатая) Этот код возвращает значение, которое я увеличил в инструменте администратора, когда я вносил заметные изменения в схему, которые требуют миграции.
-(int)queryUserVersion: (sqlite3*) db {
// get current database version of schema
static sqlite3_stmt *stmt_version;
int databaseVersion;
if(sqlite3_prepare_v2(db, "PRAGMA user_version;", -1, &stmt_version, NULL) == SQLITE_OK) {
while(sqlite3_step(stmt_version) == SQLITE_ROW) {
databaseVersion = sqlite3_column_int(stmt_version, 0);
NSLog(@"%s: version %d", __FUNCTION__, databaseVersion);
}
NSLog(@"%s: the databaseVersion is: %d", __FUNCTION__, databaseVersion);
} else {
NSLog(@"%s: ERROR Preparing: , %s", __FUNCTION__, sqlite3_errmsg(db) );
}
sqlite3_finalize(stmt_version);
return databaseVersion;
}
У меня есть аналогичный метод для версии схемы, где SQL-оператор изменяется на "PRAGMA schema_version;"