我遇到问题,我想升级我的应用,但我不想丢失存储的数据。
问题是我的数据库代码中有这个:
@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);
}
我还想过各种数据备份,所以我至少可以保存数据,然后再升级。问题是我认为我只有两个选择:
a)根设备 b)通过usb连接
问题是设备usb不起作用。我的电脑似乎没有认出来。
有没有保存我的数据?我已经尝试过应用程序Astro,Super Backup,Titanium Backup,但所有这些都需要root。问题是,如果没有USB电缆我就无法生根。
我的平板电脑是三星Galaxy Tab 2 7.0。有小费吗?
答案 0 :(得分:3)
在onCreate
中,您可以执行"CREATE TABLE IF NOT EXISTS"
在onUpdate
中,您可以在需要时"ALTER TABLE"
答案 1 :(得分:0)
这是数据库版本,而不是应用版本。如果您的数据库结构正在发生变化,您可以创建更智能的升级路径。 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++;
}
}