在我的Android应用程序中,我创建了包含一些数据的数据库,它位于应用程序商店。现在我需要根据新的要求更改数据库。当我更新apk文件时,它不会再次创建新的数据库,因为它已经创建。
如何更新已在用户设备上创建的数据库?我怎样才能调用sqlite db的onUpgread()方法?有没有办法在模拟器上检查它? 请建议。谢谢。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME );
onCreate(db);
}
答案 0 :(得分:4)
如果数据库版本已增加,则会自动调用onUpgrade
方法。
创建数据库时,您将构造函数的版本号作为整数提供。例如
public class DatabaseHelper extends SQLiteOpenHelper{
static final String dbName = "myDatabase";
static int dbVersion = 3;
public DatabaseHelper(Context context) {
super(context, dbName, null, dbVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Create database
}
如果增加上面的dbVersion,再次创建数据库时,会看到该数字已增加,因为它会跟踪您发送的当前版本号。值的增加将触发onUpgrade
并运行该代码。
在onUpgrade
方法中,您可以指定不同版本号之间的操作。例如,在版本2和3之间可能会对数据库进行更改,但也会在3到4之间进行更改,在这种情况下,您需要处理将从2连续跳到4的人员,他们不会更新他们的开发人员可能喜欢的APK文件!
执行此操作的一种简单方法是使用if
语句,并按顺序更新数据库,以便按时间顺序处理升级。
答案 1 :(得分:1)
增加DATABASE_VERSION
以更新数据库。当您在此时增加数据库版本时,将调用onUpgrade
方法。