我需要覆盖 onDowngrade 方法,以便onDowngrade()
在我的应用程序中的旧版本数据库替换应用程序的现有版本时调用
即(新版本数据库)<(旧版本数据库)。
示例:当我尝试使用数据库版本 3 安装新应用程序时,将使用数据库版本 2 替换当前或已安装的应用程序,从未调用此 onDowngrade 方法。
我希望我的问题很清楚。请借此机会回答这个问题,对这种方法有所了解。
MY新版app源码:
public class MyDatabase extends SQLiteOpenHelper
{
private static final int DB_VERSION = 10;
public MyDatabase(Context context)
{
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
Log.d("Method","onCreate called");
.....
.....
.....
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.d("Method","onUpgrade called");
.....
.....
.....
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.d("Method","onDowngrade called");
.....
.....
.....
}
}
清单.xml
版本代码:10
MY旧版app源码:
public class MyDatabase extends SQLiteOpenHelper
{
private static final int DB_VERSION = 9;
public MyDatabase(Context context)
{
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
Log.d("Method","onCreate called");
.....
.....
.....
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.d("Method","onUpgrade called");
.....
.....
.....
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.d("Method","onDowngrade called");
.....
.....
.....
}
}
清单.xml
版本代码:9
最后,我的查询是我用旧应用程序替换了新应用程序(上面有相应的源代码)。
但是旧版本的应用程序不调用onDowngrade()
.