Android升级应用程序不会丢失数据
问题描述:
我有一个问题,我想升级我的应用程序,但我不想丢失存储的数据。Android升级应用程序不会丢失数据
的问题是,在我的数据库代码,我有这样的:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + POINTS_TABLE);
db.execSQL("DROP TABLE IF EXISTS " + NETWORKS_TABLE);
onCreate(db);
}
我还以为所有类型的数据备份,所以我至少可以保存数据,然后升级。问题是,我想我只是有两个选择:
一)根设备 B)通过USB
的问题是设备USB不起作用连接。我的电脑似乎无法识别它。
无论如何要保存我的数据吗?我已经尝试过应用程序Astro,超级备份,Titanium备份,但所有这些都需要root权限。问题是,我不能没有USB电缆根。
我的平板电脑是三星Galaxy Tab 2 7.0。有小费吗?
答
在onCreate
你可以做"CREATE TABLE IF NOT EXISTS"
在onUpdate
需要
答
这就是数据库版本,而不是应用程序版本时,你可以做"ALTER TABLE"
。如果您的数据库结构正在改变,您可以制作更智能的升级路径。从http://blog.adamsbros.org/2012/02/28/upgrade-android-sqlite-database/的例子将是:
public void onUpgrade(
final SQLiteDatabase db, final int oldVersion,
final int newVersion)
{
int upgradeTo = oldVersion + 1;
while (upgradeTo <= newVersion)
{
switch (upgradeTo)
{
case 5:
db.execSQL(SQLiteSet.V5_ADD_LAST_CARD);
db.execSQL(SQLiteCard.V5_ADD_FAILED);
break;
case 6:
db.execSQL(SQLiteSet.V6_ADD_IMPORT_TYPE);
break;
case 7:
db.execSQL(SQLiteSet.V7_ADD_SHORT_FNAME);
break;
}
upgradeTo++;
}
}
我知道我可以做到,问题是,我仍然会失去我目前的数据,我不是吗? – dex90 2015-01-21 10:18:26
不,这样你就不会丢失你的db数据,因为任何现有的表格都不会在onCreate中修改。 – 2015-01-21 11:38:25
事情是,当我尝试更新我的应用程序时,它说:相同的软件包,但签名不同 – dex90 2015-01-21 11:41:57