我有一个应用程序,使用的是我提供的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条件将不会运行,因为他已经在升级旧版本之前启动了旧应用程序,并且通过升级版本也不会重置共享首选项。
答案 0 :(得分:1)
好像您已经在使用SQLiteOpenHelper
来管理数据库(在DatabaseHelper
上进行猜测)。这使事情变得容易。您可以使用它来满足您的需求。
不必要地丢失SharedPreferences
第一次运行检查。只需在助手onCreate()
中设置数据库即可。如果数据库文件在设备中不存在,即“首次运行”,它将运行一次。
要从旧版本更新到新版本,请提高提供给SQLiteOpenHelper
构造函数的数据库版本,并在onUpgrade()
中进行数据更改。如果存在具有旧版本号的数据库文件,它将运行。