我刚完成我的第一个Android应用程序。当前,数据库助手包含此方法:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+SUBJECTS_TABLE_NAME);
onCreate(db);
}
经过一番谷歌搜索后,我得到了关于该方法应使用的确切内容的矛盾信息。当我更新应用程序时,我不想更改数据库,并且我认为此方法当前会擦除用户数据吗?运行不更改任何数据库更新的最佳方法是什么?
答案 0 :(得分:2)
您可以使用:-
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
不过,也可以选择不更改数据库版本号(构造SQLiteOpenHelper子类(即DatabaseHelper)时的第4个参数)。
两者都可以使用。
P.S。您当前拥有的onUpgrade方法不会删除数据库,而是会删除(删除)数据库中的表。
答案 1 :(得分:2)
仅当您更改数据库版本而不是您的应用程序时,将调用此方法。
您可以根据需要对应用程序进行任意数量的升级/更新。只要数据库的版本保持不变,您就不必担心。
在您的DatabaseHelper(或您提供的任何名称)类的构造函数中,有一个参数int version
。实例化此类时,您将传递数据库的版本。
如果您将版本从1更改为2,则会调用onUpgrade()
。
答案 2 :(得分:1)
private int DATA_BASE_VERSION=100;
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion<100){
//your data base need an alter table or something new you added
}
}
现在,如果您想再次更改
private int DATA_BASE_VERSION=101;
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion<100){
//your data base need an alter table or something new you added
}
if(oldVersion<101){
//your data base need an alter table or something new you added
}
}