几周前我已经上传了一个应用程序来玩商店。此应用程序涉及 sqlite 数据库,该数据库存储有关用户名、密码和其他详细信息的信息,这些信息由用户在本地使用应用程序时提供。
现在我在数据库中添加了更多表和字段,并且想将应用程序上传到 Playstore 作为更新?
我担心的是,如果用户从 playstore 更新应用程序 - 更新后 - 存储在数据库中的所有数据都将被保存,还是用户必须从头开始重新创建所有内容?
让我知道!
谢谢!
您必须重写 SQLiteOpenHelper 的 onUpgade 方法。在 OnUpgrade 方法中,您可以删除数据(drop sqlite 命令)或使用附加列(alter sqlite 命令)维护数据或创建新表(create sqlite 命令)。
请参阅以下代码段。
我假设你的版本是 1.(请检查你的 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,否则让它保持不变。
这不会自动为您完成。在您的 SQLiteOpenHelper 中,您需要增加 Schema 整数。这将触发现有用户的升级方法。
添加表不是问题,只需在 onUpgrade 中执行此操作,没有任何问题。
但是要添加字段,您应该使用“ALTER TABLE”SQL 命令
如果添加新列,您可以使用 ALTER TABLE 将它们插入到活动表中。如果重命名或删除列,可以使用 ALTER TABLE 重命名旧表,然后创建新表,然后使用旧选项卡的内容填充新表
在此处查看官方参考