我在我的應用程序使用SQLiteDatabase數據。我的SQLiteOpenHelper.onUpgrade(..)方法如下所示:的Android SQLiteDatabase更新模式,而不失去
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//Save current data
ArrayList<Course> tempCourses = getAllCourses();
//Drop tables
db.execSQL("DROP TABLE IF EXISTS " + TABLE_COURSES);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ASSIGNMENTS);
//create new tables
onCreate(db);
//Add temp data back to the database
for (Course course : tempCourses) {
addCourse(course);
}
}
我想在升級數據庫模式時保留舊的userdata。 但是我得到以下錯誤,當我增加數據庫版本並啓動我的應用程序:
...
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tak3r07.unihelper/com.tak3r07.CourseStatistics.MainActivity}: java.lang.IllegalStateException: getDatabase called recursively
...
這是因爲getAllCourses()將再次打開該數據庫獲得該調用onUpgrade方法(明顯的循環)的數據。 但是,我應該如何存儲我的userdata呢?
問候, Tak3r07
你想要做什麼?添加一列? – tyczj