Android SQLite Upgrade
Android上使用SQLite时,会有一个版本号。更改版本号会触发onUpgrade
这个方法。
private static int DBVERSION = 3;
...
super(context, DB_NAME, null, DBVERSION);
onUpgrade
This method executes within a transaction, If an exception is thrown, all changes will automatically be rolled back.
onUpgrade方法有三个参数,分别为database, oldVersion, newVersion
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
其中oldVersion是应用未更新前的版本号,newVersion是更新后数据库的版本号。 通过比较版本号,可以执行相应的更新操作。
由Android文档可知,SQLiteOpenHelper中的onUpgrade
是在一个***sql transaction***中。因而,直接在里面执行语句即可,不用使用db.beginTransaction();
关于android.database.sqlite.SQLiteException: Can't upgrade read-only database
的错误。在更新数据库时,一不小心就会出现这个错误。这个错误很可能由于onUpgrade
中的SQL语句写的不对或执行时机不对。