- onCreate只在数据库从无到有的时候才会调用
- 新增表,需要在onCreate和onUpgrade中都要进行增表操作,分别为新建库和升级库服务。
- onCreate里永远只写最新库的创建代码,随时保持更新。onUpgrade负责数据库的升级工作。
- 为了减少crash发生可能,在线上版的onUpgrade中增加trycatch,如果出错,删库重建是一个补救措施。
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
TableUtils.createTableIfNotExists(connectionSource, Daily.class);
TableUtils.createTableIfNotExists(connectionSource, DailyQuestionCommentDraft.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int
newVersion) {
try {
if (oldVersion < 2) {
TableUtils.createTableIfNotExists(connectionSource, DailyQuestionCommentDraft.class);
}
} catch (SQLException e) {
KLog.e(TAG, e, "升级数据库失败");
try {
TableUtils.dropTable(connectionSource, Daily.class, true);
TableUtils.dropTable(connectionSource, DailyQuestionCommentDraft.class, true);
onCreate(sqLiteDatabase);
} catch (SQLException e1) {
}
}
}