【问题标题】:Delete database when on app update应用更新时删除数据库
【发布时间】:2015-08-04 07:48:36
【问题描述】:

我已经预加载了位于 assets 中的 sqlite 数据库,在首次安装应用程序后将其复制到默认数据库位置。我想在每次应用更新时执行此程序。 我不需要保留现有数据库中的任何用户数据。

应用更新时如何删除旧的数据库文件?

【问题讨论】:

  • 优先管理应用版本,if(appver

标签: android sqlite


【解决方案1】:

这实际上是两个问题:

  • 如何在应用更新时进行操作

您可以将带有最新版本代码的变量保存在共享首选项中。每次启动应用程序后,您都会使用保存的代码检查当前代码。如果它们不匹配,那就是更新,你执行了一些代码。

  • 如何删除数据库

如果数据库已关闭,您可以简单地删除该文件。使用Context.getDatabasePath(String) 查找文件的位置,使用File.delete() 删除它。确保没有进程正在访问数据库文件。如果是这样,您可能需要使用File.deleteOnExit() 并强制重新启动应用程序。

【讨论】:

    【解决方案2】:

    使用SQLiteOpenHelper类的onUpgrade()方法。

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Delete old table 
        db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
    
        // Re-create table
        onCreate(db);
     }
    

    【讨论】:

    • OnUpgrade 在数据库版本增加时调用。我不是在增加版本,而是在 assets 文件夹中提供新的数据库文件。此外,您的语句正在删除表,而不是数据库文件。
    猜你喜欢
    • 2012-02-13
    • 2014-11-06
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多