4

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

}
4

2 回答 2

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语句,并按顺序更新数据库,因此按时间顺序处理升级。

于 2012-09-21T08:59:31.523 回答
1

增加你DATABASE_VERSION的更新数据库。当您增加数据库版本时,onUpgrade会调用该方法。

于 2012-09-21T08:55:08.380 回答