onDowngrade()
アプリ内の古いバージョンのデータベースがアプリの既存のバージョンを置き換えるたびに、 onDowngrade メソッドをオーバーライドする必要があります。
つまり、(新しいバージョンのデータベース) < (古いバージョンのデータベース) です。
例: データベース バージョン 3 で新しいアプリをインストールしようとすると、現在または既にインストールされているアプリがデータベース バージョン 2 に置き換えられ、この onDowngrade メソッドが呼び出されることはありません。
私の質問が非常に明確であることを願っています。この質問に答えて、この方法についてアイデアを出してください。
私の新しいバージョンのアプリ ソース コード:
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
私の古いバージョンのアプリ ソース コード:
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()
.