我有一个应用程序,我使用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 回答
看起来您已经在使用
SQLiteOpenHelper
来管理您的数据库(猜测DatabaseHelper
) . 这使事情变得更容易 . 您可以使用它来满足您的需求 .将
SharedPreferences
首次运行检查丢失为不必要的 . 只需在助手onCreate()
中设置数据库即可 . 如果设备中不存在数据库文件,即"first run",它将运行一次 .要从旧版本更新为新版本,请提升您为
SQLiteOpenHelper
构造函数提供的数据库版本,并在onUpgrade()
中进行数据更改 . 如果存在具有旧版本号的数据库文件,它将运行 .