几个星期前我已经上传了一个应用程序到商店。此应用程序涉及sqlite数据库,该数据库存储有关用户名,密码以及用户在本地使用应用程序时给出的其他详细信息的信息。
现在我有几个表和字段添加到数据库中并想将应用程序上传到Playstore作为更新?
我担心的是,如果用户从playstore更新应用程序 - 更新后 - 存储在数据库中的所有数据都将被保存,或者用户是否必须从头开始重新创建所有内容?
让我知道!
谢谢!
答案 0 :(得分:7)
您必须覆盖SQLiteOpenHelper的onUpgade方法。在OnUpgrade方法中,您可以删除数据(drop sqlite命令)或使用其他列维护数据(alter sqlite命令)或创建新表(create sqlite命令)。
请参阅以下摘录。
我假设你的版本是1.(Plz检查你的SqliteOpenHelper类的构造函数)
将版本增加1。
class DatabaseHelper extends SqliteOplenHelper{
private static final int DATABASE_VERSION = 2; //new version of the database
private static final int Database_name = "MyDatabase";
private static final String alterUserName = "alter table users add name text";
private static final String table_users = "create table if not exists "
+ users + "(" + "_id integer primary key autoincrement,"
+ "email text" + ")";
public DatabaseHelper(Context context) {
super(context, Database_name, null, DATABASE_VERSION);
cntxt = context;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(table_users);
db.execSQL(alterUserName);
}
}
现在,每当您使用数据库更改滚动下一个更新时,请务必将数据库版本增加1,否则请保持不变。
答案 1 :(得分:1)
这不是自动完成的。在SQLiteOpenHelper中,您需要递增Schema整数。这将触发现有用户的升级方法。
添加表不是问题,只需在onUpgrade中执行此操作,不会中断。
但是要添加字段,您应该使用'ALTER TABLE'SQL命令
如果添加新列,可以使用ALTER TABLE将它们插入到实时表中。如果重命名或删除列,可以使用ALTER TABLE重命名旧表,然后创建新表,然后使用旧选项卡的内容填充新表
参见官方参考here