onUpgrade не вызывается в первый раз в Android SQLiteOpenHelper
Я сталкиваюсь с очень странной проблемой. Я занимаюсь разработкой приложения для Android с базой данных sqlite. Я использую класс DBAdapter, который расширяет SQLiteOpenHelper. Я искал в Интернете, но не могу найти решение.
Вот мой класс SQLiteOpenHelper
public class DBAdapter extends SQLiteOpenHelper{
private static DBAdapter mInstance = null;
/**The Android's default system path of your application database. */
private static String DB_PATH = "/data/data/com.mydbapp.android/databases/";
private final static String DB_NAME = "mydb.sqlite";
private static final int DATABASE_VERSION = 1;
private static Context myContext;
public static DBAdapter getInstance(Context ctx) {
if (mInstance == null) {
mInstance = new DBAdapter(ctx);
}
return mInstance;
}
private DBAdapter(Context context) {
super(context, DB_NAME, null, DATABASE_VERSION);
DBAdapter.myContext = context;
DB_PATH = "/data/data/" +
context.getPackageName()+
"/databases/";
}
public void deleteDB()
{
myContext.deleteDatabase(DB_NAME);
}
public void createDataBase() throws IOException{
boolean dbExist = checkDataBase();
if(dbExist )
{
this.getWritableDatabase();
}
if(!dbExist){
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
e.printStackTrace();
throw new Error("Error copying database");
}
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
if (newVersion > oldVersion)
{
System.out.println("DB Upgrade logic")
}
}
Теперь, когда я меняюсьprivate static final int DATABASE_VERSION = 2;
тогдаonUpgrade()
метод не вызывается, но когда я меняюprivate static final int DATABASE_VERSION = 3;
тогда onUpgrade () работает. Поэтому мой вопрос заключается в том, почему это не вызываетonUpgrade()
метод, когда я изменяю версию БД с 1 на 2. Пожалуйста, помогите мне решить эту проблему.
Я заметил еще одно странное поведение. Когда я первоначально запускаю приложение с версией 1 БД, а затем снова устанавливаю приложение с верной версией БД (1), и теперь, если я изменяю версию БД 1 на 2, вызывается onUpgrade (). Я хочу сказать, что мне нужно установить приложение 2 раза с одной и той же версией БД, а затем, если я изменю версию БД, вызывается onUpgrade ().