升级生产Android应用程序的SQLite数据库,这是正确的吗?

升级生产Android应用程序的SQLite数据库,这是正确的吗?,第1张

概述正如标题所说,我有一个生产 Android应用程序,安装量约为1000.我不得不在SQLite中进行数据库更改,到目前为止,SQLite DB的版本已设置为版本“1”. 希望我在注释中充分解释下面的代码,这段代码驻留在我的SQLiteOpenHelper类中,因此onUpgrade方法是Class的一部分: // Provides an upgrade path for the DB when t 正如标题所说,我有一个生产 Android应用程序,安装量约为1000.我不得不在sqlite中进行数据库更改,到目前为止,sqlite DB的版本已设置为版本“1”.

希望我在注释中充分解释下面的代码,这段代码驻留在我的sqliteOpenHelper类中,因此onUpgrade方法是Class的一部分:

// ProvIDes an upgrade path for the DB when the apps version is updated.    @OverrIDe    public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {        // First version of the DB was 1. Logic: each if statement will        // alter the DB cumulatively based on the version code. So,if the        // newVersion was version 3,there would be two if statements,one        // for oldVersion 1 and one for oldVersion 2. oldVersion 2 will        // contain the logic for upgrading from version 2 to 3,while        // oldVersion 1 will contain a combination of alter statements        // allowing the database to upgrade from version 1 directly to        // version 3.        if (oldVersion == 1) {            db.execsql("ALTER table plans ADD ColUMN " + App.CURRENCYCODE                    + " TEXT");            Locale locale = Locale.getDefault();            ContentValues content_values = new ContentValues();            content_values.put(App.CURRENCYCODE,locale.toString());            db.update(App.DBPLANS,content_values,App.ID + " > ?",new String[] {                    "0"            });        }        if (oldVersion == 2) {            // Placeholder for next database upgrade instructions.        }    }

如果这里有任何陷阱,请告诉我.到目前为止,它测试得很好,虽然我非常担心搞乱我的第一次数据库升级.我有1000个左右的用户,我不想失去他们.

再次感谢!

解决方法 当我需要更新这样的数据库时,我通常使用switch语句来执行此 *** 作,其中案例会相互渗透,例如:

switch (oldVersion) {    case 1:        // update to version 2        // do _not_ break; -- fall through!    case 2:        // update to version 3        // again,do not break;    case 3:        // you're already up to date

这样做的好处是,当您继续更改数据库时,最终不会在多个if语句中重复更新语句,并且添加数据库更新只需要添加新的case语句,而不是更新多个代码块.

有时会出现例外情况,例如在一个版本中添加了一列但在将来删除了一列,因此您需要注意.

@H_404_38@ 总结

以上是内存溢出为你收集整理的升级生产Android应用程序的SQLite数据库,这是正确的吗?全部内容,希望文章能够帮你解决升级生产Android应用程序的SQLite数据库,这是正确的吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存