更新数据库无效-Android

更新数据库无效-Android,第1张

概述我编写了一些代码,以确保在发布对应用程序的更新时可以正确更新数据库.问题是SQLiteOpenHelper的OnUpdate()函数从不被调用.这是我在主要活动中编写的代码-SharedPreferencesDB_ver=getSharedPreferences(PREFS_NAME,0);myDbHelper=newDataBaseHelper(con,DB_

我编写了一些代码,以确保在发布对应用程序的更新时可以正确更新数据库.

问题是sqliteOpenHelper的OnUpdate()函数从不被调用.
这是我在主要活动中编写的代码-

    SharedPreferences DB_ver = getSharedPreferences(PREFS_name, 0);    myDbHelper = new DataBaseHelper(con, DB_ver.getInt("DB_ver", 1));    try {        if(DB_ver.getInt("DB_ver", 1) !=getPackageManager().getPackageInfo(getPackagename(), 0).versionCode )        {              SharedPreferences.Editor editor = DB_ver.edit();              editor.putInt("DB_ver", getPackageManager().getPackageInfo(getPackagename(), 0).versionCode);        }    } catch (nameNotFoundException e) {        e.printstacktrace();    }

这是sqliteOpenHelper的构造函数(它扩展了sqliteOpenHelper)-

public DataBaseHelper(Context context,int ver_code) {           super(context, DB_name, null, ver_code);    this.myContext = context;}   

现在,我了解到Super行应该自动调用onUpgrade()函数,但事实并非如此.

我已经分别测试了onUpgrade()函数,并且可以正常工作.

有谁知道这是什么问题?

谢谢!

@H_502_28@解决方法:

您所做的事情实际上不是必需的. sqliteOpenHelper可以满足您的所有需求.这是一个可能的情况. sqliteOpenHelper有一个getVersion()方法,以防您需要一次查询它(我从没做过):

public class MysqLiteOpenHelper extends sqliteOpenHelper {  private static final String dbname = "whatever";  private static final int    dbversion = 1;  // your first version//private static final int    dbversion = 2;  // your second version//private static final int    dbversion = 3;  // your third version  public MysqLiteOpenHelper(Context context) {    super(context, dbname, null, dbversion);    this.context = context;  }  @OverrIDe  public voID onCreate(sqliteDatabase sqliteDatabase) {    // ... Create first database content  }  @OverrIDe  public voID onUpgrade(sqliteDatabase sqliteDatabase, int oldVersion, int newVersion) {    switch (newVersion) {      case dbversion:  // suppose your on third version        if (oldVersion == 1) {          upgradeFrom1To2(sqliteDatabase);          upgradeFrom2To3(sqliteDatabase);        }        if (oldVersion == 2) {          upgradeFrom2To3(sqliteDatabase);        }        break;      default:        break;    }  }  public voID upgradeFrom1To2(sqliteDatabase sqliteDatabase) {    // ...  }  public voID upgradeFrom2To3(sqliteDatabase sqliteDatabase) {    // ...  }}
总结

以上是内存溢出为你收集整理的更新数据库无效-Android全部内容,希望文章能够帮你解决更新数据库无效-Android所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1071328.html

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

发表评论

登录后才能评论

评论列表(0条)

保存