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);
}
以上若有不正确之处,欢迎指正
处理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);
}
以上若有不正确之处,欢迎指正
相关文章推荐
- Hibernate 笔记 实现对数据库的增删改查
- 转载:分布式数据库挑战与分析
- oracle rac 日志二 全
- MySQL之数据库模型设计-1 第一范式、第二范式、第三范式理解
- Oracle RAC集群、进程、日志简介
- 关系数据库规范化理论
- 数据库MySQL基础——增删查改
- 完整java开发中JDBC连接数据库代码和步骤
- 在AWS RDS(Oracle)上执行数据导入
- MySQL5.7.11免安装版无密码问题
- mac系统下MySQL5.7.11安装版密码问题
- postgresql - 事务
- Oracle中关于(汉字)字符问题
- 教务管理系统-数据库2
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
- mysql 日期处理及格式化
- oracle执行计划详解
- Memcache引入Repcached组件做HA高可用方案
- Linux上安装memcached
- Oracle中Merge into用法总结