iOS开发如何设置sqlite版本升级

最近开发的软件涉及到sqlite版本升级问题即修改数据结构

处理app升级之后sqlite数据机构的改变主要有以下三种方法

第一种方法:直接判断数据库中的要改变数据结构的table是否存在要修改或者要删除或者要添加的字段,接下来改修改的修改、改删除的删除、改添加的添加(不建议);

第二种方法:在app本地存储sqlite数据库的版本,根据版本号判断,改修改的修改、改删除的删除、改添加的添加(不建议);

第三种方法:直接使用fmdb第三方库;

第四种方法:直接设置sqlite数据库的版本(也是我使用的方法),代码如下:

打开数据库之后:读取sqlite版本号

+(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);

            DebugLog(@"version %d", databaseVersion);

        }

//        DebugLog(@"the databaseVersion is: %d", databaseVersion);

    } else {

        DebugLog(@"ERROR Preparing: , %s", sqlite3_errmsg(db) );

    }

    sqlite3_finalize(stmt_version);

    return databaseVersion;

}

然后将升级版的app的sqlite数据库版本与之前的进行比较,接下来该修改的修改、改删除的删除、改添加的添加。

以上操作完成之后在设置给sqite数据库设置心的版本号,一下是设置数据库版本号的代码

char *errorMsg = NULL;

            if (sqlite3_exec(_db, [tString1 UTF8String], nil, nil, &errorMsg)!= SQLITE_OK) {

                DebugLog(@"%s" , errorMsg);

            }

以上若有不正确之处,欢迎指正

你可能感兴趣的:(iOS开发如何设置sqlite版本升级)