我寫了一些代碼來確保我的數據庫在我將應用程序發佈更新時能夠正確更新。更新數據庫不起作用-Android
問題是SQLiteOpenHelper的OnUpdate()函數永遠不會被調用。 這裏是我的主要活動寫的代碼 -
SharedPreferences DB_ver = getSharedPreferences(PREFS_NAME, 0);
myDbHelper = new DataBaseHelper(con, DB_ver.getInt("DB_ver", 1));
try {
if(DB_ver.getInt("DB_ver", 1) !=getPackageManager().getPackageInfo(getPackageName(), 0).versionCode)
{
SharedPreferences.Editor editor = DB_ver.edit();
editor.putInt("DB_ver", getPackageManager().getPackageInfo(getPackageName(), 0).versionCode);
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
這裏是SQLiteOpenHelper的構造函數(它擴展了SQLiteOpenHelper) -
public DataBaseHelper(Context context,int ver_code) {
super(context, DB_NAME, null, ver_code);
this.myContext = context;
}
現在我理解的是,超級線應該調用onUpgrade()函數會自動執行,但它不會。
我已經單獨測試了onUpgrade()函數,它的工作原理。
有誰知道有什麼問題?
謝謝!
我不明白爲什麼你想在SharedPreferences手動存儲的版本,這是不必要。每當你發佈一個新版本的應用程序,將ver_code增加到2(在你的代碼中),升級方法將被自動調用。 – dmon 2011-04-29 15:08:22