在升级应用程序时删除SQLite数据库

时间:2013-04-29 14:39:27

标签: android database sqlite upgrade

我实现了一个使用Sqlite数据库的Android应用程序。

当我发布我的应用程序的新版本(不在playStore中)时,我将其上传到我的服务器上,因此,如果旧应用程序正在运行,调用Web服务,可以理解新版本可用。因此,下载并安装新版本。

当应用程序被重载时,数据库不会被删除,所以如果我需要对数据库进行任何更改,我需要使用该方法:

public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion)

这很好,除非我需要在我的数据库中做很多更改。在这种情况下,代码变得不可读。所以我想删除数据库并创建一个新数据库。

我该如何执行此任务?

编辑:如何使用context.deleteDatabase(DATABASE_NAME);

3 个答案:

答案 0 :(得分:7)

对于丢弃数据库(其中数据是例如云中可用数据的缓存副本),我通常会onUpgrade()调用onCreate()并使onCreate()执行{{1}在创建表之前。

例如:

DROP TABLE IF EXISTS <tablename>

答案 1 :(得分:1)

你可以考虑一下这个

使用共享首选项中的标记跟踪升级跟踪。当您下载新版本时,然后将标志设置为true。在每次发射检查标志。如果该标志为true,则重新创建数据库并将标志设置为false。

我没有尝试类似的东西,但我认为它应该适合你的情况。

并删除数据库context.deleteDatabase(DATABASE_NAME);

答案 2 :(得分:0)

如果您只想重新创建整个数据库,只需删除旧表中的每个表。