【问题标题】:update db while updating apk更新 db 时更新 apk
【发布时间】:2012-09-21 08:52:44
【问题描述】:

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

}

【问题讨论】:

    标签: android database sqlite onupdate


    【解决方案1】:

    如果数据库版本已增加,则会自动调用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 语句,并按顺序更新数据库,因此按时间顺序处理升级。

    【讨论】:

    • 好的。但是我如何在模拟器上检查这个..我想确定一下。有什么方法可以检查这个。请建议
    • 如果你想在模拟器上检查它,用以前版本的数据库加载你的应用程序,确保数据库被初始化,然后更改数据库版本号,添加代码到onUpgrade,并使用此新代码和版本号再次加载应用程序。如果你在 onUpgrade 中设置一个断点,你会看到它被命中,它会运行代码,更新你的数据库,就像在设备上用一个新的 APK 更新一样
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      相关资源
      最近更新 更多