您的位置:首页 > 数据库

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

2016-03-16 23:25 357 查看
最近开发的软件涉及到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);
            }
以上若有不正确之处,欢迎指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: