我写了一些代码来确保我的数据库在我将应用程序发布更新时能够正确更新。更新数据库不起作用-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