android不更新数据库数据库,更新数据库无效-Android

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

问题是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()函数,并且可以正常工作.

有谁知道这是什么问题?

谢谢!

解决方法:

您所做的事情实际上不是必需的. 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) {

// ...

}

}

标签:sqlite,android,database

来源: https://codeday.me/bug/20191208/2091682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值