0

想象一下以下场景(我允许从我的应用程序备份/恢复,我正在备份/恢复整个 file.db):

用户对数据库进行备份。将来我会更新我的应用程序,它有一个新版本的数据库。如果用户使用旧版本恢复数据库会发生什么?

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

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

4

2 回答 2

1

可能这不是最好的方法,但您可以这样做:

1-将数据库版本存储在数据库中。

2- 恢复数据库后,检查数据库版本并进行相应的更改。像

void afterRestoration()
{
   long dbVersion = get from db;
   if(dbVersion == 1)
   {
     alter table1 add column1;
   }
   else
   {
   }
}
于 2012-11-12T13:05:29.363 回答
1

您可以通过 a 访问 SQLite 数据库SQLiteOpenHelper,它提供了三个回调onCreate()onUpgrade()onOpen()

构造函数声明一个version参数,并在内部将数据库版本(存储在文件中)与提供的参数进行比较。如果请求的版本比文件的版本新,onUpgrade(db, old, new)则会调用您的版本,您将有机会更改表、填充行等。

恢复过程应该简单地关闭所有打开的游标和助手并复制新文件。

于 2012-11-12T13:10:26.103 回答