1

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

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

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

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

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

我该如何执行此任务?

编辑:使用怎么样context.deleteDatabase(DATABASE_NAME);

4

3 回答 3

7

对于一次性数据库(其中数据是云中可用数据的缓存副本),我通常在创建表之前onUpgrade()调用onCreate()onCreate()执行。DROP TABLE IF EXISTS <tablename>

例如:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  onCreate(db);
}

@Override
public void onCreate(SQLiteDatabase db) {
  db.execSQL("DROP TABLE IF EXISTS foo");
  db.execSQL("CREATE TABLE foo(bar INTEGER, baz TEXT");
}
于 2013-04-29T15:03:10.380 回答
1

你可以考虑这个

使用共享首选项中的标志跟踪您的升级。当您下载新版本时,请将标志设置为 true。在每次启动时检查标志。如果标志为真,则重新创建数据库并将标志设置为假。

我没有尝试过类似的事情,但我认为它应该适用于你的情况。

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

于 2013-04-29T14:49:07.730 回答
0

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

于 2013-04-29T15:11:21.753 回答