在更新apk时更新db

时间:2012-09-21 08:52:45

标签: android database sqlite onupdate

在我的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);

}

2 个答案:

答案 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方法。