android - 更新时清除数据

标签 android sqlite

我正在 Android 上维护一个长期存在的应用程序,我决定更改它背后的数据模型,将几个 SQLite 数据库合并为一个新数据库。

问题是,如果我只是创建新的数据库并停止使用旧的数据库,那么每个应用程序用户的本地存储中仍然会有旧的 SQLite 文件。

有没有办法在新版本的应用程序上强制执行“清除数据”? (我正在寻找“正确”的方法,我知道我可以检查新数据库是否存在并据此采取行动,但我认为可能有更好的方法)

谢谢

最佳答案

每当数据库需要升级时(例如,当用户下载了新版本的应用程序时),数据库版本号的变化会调用 onUpgrade() 方法,您可以重写 SQLiteOpenHelper 类提供的这个方法:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.w("TaskDBAdapter", "Upgrading from version "+oldVersion
            +" to "+newVersion
            +", which will destroy all old data");
    for (String string : table_names)
            db.execSQL("drop table if exists "+ string);
    onCreate(db);
}

关于android - 更新时清除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113604/

相关文章:

android - android中的ontouch : getting X and Y coordinates and drawing circle on that point

android - 从网址流式传输音频和视频?

node.js - Sqlite3、 Electron 、webpack : cannot find module abi_crosswalk. json

caching - 是否可以针对不同的数据库调整不同的内存缓存大小?

mysql - 在 sql 查询中返回前 3 个计数值

Android SQLite 数据库插入/选择不工作

android - 如何更新android actionbar中菜单的文本

android - 如何在android中获取特定时间和日期的闹钟?

android - 如何记录来自网络摄像机的 http 直播流

javascript - 使用 Ñ 字符(拉丁语)在 PhoneGap 上的 SQLite 中查询不给出结果