我实现了一个使用Sqlite数据库的Android应用程序。
当我发布我的应用程序的新版本(不在playStore中)时,我将其上传到我的服务器上,因此,如果旧应用程序正在运行,调用Web服务,可以理解新版本可用。因此,下载并安装新版本。
当应用程序被重载时,数据库不会被删除,所以如果我需要对数据库进行任何更改,我需要使用该方法:
public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion)
这很好,除非我需要在我的数据库中做很多更改。在这种情况下,代码变得不可读。所以我想删除数据库并创建一个新数据库。
我该如何执行此任务?
编辑:如何使用context.deleteDatabase(DATABASE_NAME);
?
答案 0 :(得分:7)
对于丢弃数据库(其中数据是例如云中可用数据的缓存副本),我通常会onUpgrade()
调用onCreate()
并使onCreate()
执行{{1}在创建表之前。
例如:
DROP TABLE IF EXISTS <tablename>
答案 1 :(得分:1)
你可以考虑一下这个
使用共享首选项中的标记跟踪升级跟踪。当您下载新版本时,然后将标志设置为true。在每次发射检查标志。如果该标志为true,则重新创建数据库并将标志设置为false。
我没有尝试类似的东西,但我认为它应该适合你的情况。
并删除数据库context.deleteDatabase(DATABASE_NAME);
答案 2 :(得分:0)
如果您只想重新创建整个数据库,只需删除旧表中的每个表。