如何在Objective-c中使用sqlite3 PRAGMA user_version?

mob*_*bob 11 sqlite iphone objective-c pragma

我正在尝试检查sqlite DB的user_version.我有一个管理工具来破坏版本,但我不理解pragma语句的语法.我期望在if语句中测试该值.有人可以提供代码示例吗?当我在我的objective-c代码中嵌入pragma语句时,编译器会抛出错误.

mob*_*bob 22

我从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;
}
Run Code Online (Sandbox Code Playgroud)

对于sql语句更改为的模式版本,我有类似的方法 "PRAGMA schema_version;"