我正在使用SQLite OpenHelper来处理数据库版本并且它运行正常,我的问题是,如果我设置了一些更新并且新用户安装了我的应用程序,则不会获得UPGRADES,因为它将使用最后一个DB_VERSION运行onCreate < / p>
说明:
private static final int DB_VERSION = 3;
Context context;
public DB(Context c) {
super(c, DB_NAME, null, DB_VERSION);
context = c;
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table1...");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d("DBUpgrade", "Atualizando DATABASE");
switch (oldVersion) {
case 2: {
execSQLFromFile(db, "sql2");
}
case 3: {
execSQLFromFile(db, "sql3");
}
}
方案:
自第一个应用发布以来已安装用户1 - &GT;他将获得所有升级
用户2第一次在他的设备中安装了我的apk的最后一个版本,其中包含db_version 3 - &GT;他不会得到升级,只有onCreate
ofc我知道为什么会发生这种情况,但我不知道如何通过一种简单的方式解决它,我唯一的方法就是在onUpgrade中调用onUpgrade(db, 0, DB_VERSION);
这个输入,但不要在交换机内调用这些情况我不知道为什么,因为我发送0,它应该调用案例:2,因为我没有休息不是吗?
但这样做我松开OnUpgrade用于下一个版本,它将始终检查oldVersion,并重做相同的代码,因此它会崩溃因为Unique列,改变列的任何内容
所以我仍然没有办法在第一次安装时结束升级=(
答案 0 :(得分:0)
用户2第一次在他的设备中安装了我的apk的最后一个版本,其中包含db_version 3 - &gt;他不会得到升级,只有onCreate
没有&#34;升级&#34;,因为没有要升级的数据库。必须实现onCreate()
才能使用正确的(最新)架构创建数据库。