Android关注还原数据库

时间:2012-11-12 12:53:20

标签: android database database-backups

想象一下以下场景(我允许从我的应用程序进行备份/恢复,我正在备份/恢复白色整个文件.bb):

用户备份数据库。 将来我会对我的应用程序进行更新,该应用程序具有新版本的数据库。 如果用户使用旧版本还原数据库会发生什么?

我怎样才能避免这种问题?

使用BackupHelper是个好主意吗?我做了一个模拟我的数据库最糟糕的情况,并给了20k,建议BackupHelper小于1mb,这是一个好主意使用它?我认为我的应用程序永远不会超过100kb。

2 个答案:

答案 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),您将有机会更改表格,填充行等等。

恢复过程应该只关闭所有打开的游标和帮助程序,然后复制新文件。