Android SQLite-具有另一个应用程序版本的新数据库

时间:2018-12-09 21:54:16

标签: android sqlite

我有一个应用程序,使用的是我提供的SQLite数据库,因此它是固定的,用户不会更新数据库中的任何内容。将仅显示该数据库中的结果。

问题是-我仅在应用程序首次运行时以编程方式创建该数据库:

  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

    if(!prefs.getBoolean("firstTime", false)) {
        final DatabaseHelper myDb;
        myDb = new DatabaseHelper(this);
        myDb.deltab();
        myDb.insertData("Josh","Smith","012345678","something","something","something");myDb.insertData("Josh","Smith","012345678","something","something","something"); }

    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("firstTime",true);
    editor.apply();

首先我放下表(以确保它会从头开始创建它),然后创建它并插入数据。

这在第一次运行应用程序时很好。

但是如果将来我需要在该表中添加更多数据,或者在下一个应用程序版本中更改任何现有数据,该怎么办?

如果用户下载该应用程序的新版本,则firstTime条件将不会运行,因为他已经在升级旧版本之前启动了旧应用程序,并且通过升级版本也不会重置共享首选项。

1 个答案:

答案 0 :(得分:1)

好像您已经在使用SQLiteOpenHelper来管理数据库(在DatabaseHelper上进行猜测)。这使事情变得容易。您可以使用它来满足您的需求。

  • 不必要地丢失SharedPreferences第一次运行检查。只需在助手onCreate()中设置数据库即可。如果数据库文件在设备中不存在,即“首次运行”,它将运行一次。

  • 要从旧版本更新到新版本,请提高提供给SQLiteOpenHelper构造函数的数据库版本,并在onUpgrade()中进行数据更改。如果存在具有旧版本号的数据库文件,它将运行。