SQLiteOpenHelper
每次调用getWriteDatbase或者getReadDatabse,都会走到getDatabaseLocked方法,
在其中会判断数据库的版本和当前的版本进行比较,从而回调
onCreate(db) 只会调用一次
onDowngrade(db, version, mNewVersion);
onUpgrade(db, version, mNewVersion);
version信息通过PRAGMA 保存
public int getVersion() {
return ((Long) DatabaseUtils.longForQuery(this, "PRAGMA user_version;", null)).intValue();
}
/**
* Sets the database version.
*
* @param version the new database version
*/
public void setVersion(int version) {
execSQL("PRAGMA user_version = " + version);
}
网友评论