想象一下以下场景(我允许从我的应用程序进行备份/恢复,我正在备份/恢复白色整个文件.bb):
用户备份数据库。 将来我会对我的应用程序进行更新,该应用程序具有新版本的数据库。 如果用户使用旧版本还原数据库会发生什么?
我怎样才能避免这种问题?
使用BackupHelper是个好主意吗?我做了一个模拟我的数据库最糟糕的情况,并给了20k,建议BackupHelper小于1mb,这是一个好主意使用它?我认为我的应用程序永远不会超过100kb。
答案 0 :(得分:1)
可能这不是最好的方法,但你可以这样做:
1-将数据库版本存储在数据库中。
2-恢复数据库后,检查数据库版本并相应地执行所需的更改。像
void afterRestoration()
{
long dbVersion = get from db;
if(dbVersion == 1)
{
alter table1 add column1;
}
else
{
}
}
答案 1 :(得分:1)
您可以通过SQLiteOpenHelper
访问SQLite数据库,该{{3}}提供三个回调:onCreate()
,onUpgrade()
和onOpen()
。
构造函数声明了一个version
参数,并在内部将数据库版本(存储在文件中)与提供的参数进行比较。如果请求的版本比文件的版本新,则调用onUpgrade(db, old, new)
,您将有机会更改表格,填充行等等。
恢复过程应该只关闭所有打开的游标和帮助程序,然后复制新文件。