首页 文章

Android SQLite - 具有其他应用版本的新数据库

提问于
浏览
0

我有一个应用程序,我使用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 回答

  • 1

    看起来您已经在使用 SQLiteOpenHelper 来管理您的数据库(猜测 DatabaseHelper ) . 这使事情变得更容易 . 您可以使用它来满足您的需求 .

    • SharedPreferences 首次运行检查丢失为不必要的 . 只需在助手 onCreate() 中设置数据库即可 . 如果设备中不存在数据库文件,即"first run",它将运行一次 .

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

相关问题