繁体   English   中英

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

[英]Android SQLite - new database with another app version

我有一个应用程序,使用的是我提供的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条件将不会运行,因为他已经在升级旧版本之前启动了旧应用程序,并且通过升级版本也不会重置共享首选项。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM