when i update the db version , the update db sql execute successfully , but the setVersion is failed . so the next time the update db sql will execute again , and app crashed (duplicate column name) .
private void openOrUpgrade(int newVersion) {
database = SQLiteDatabase.openOrCreateDatabase(getAbsDBPath("dbName"), password, null);
int oldVersion = database.getVersion();
if (oldVersion != newVersion) {
database.beginTransaction();
try {
if (oldVersion == 0) {
// exec create db sql
} else {
if (oldVersion < newVersion) {
// exec update db sql
// mostly like "ALTER TABLE tableName ADD newFiled TEXT"
}
}
//update version
database.setVersion(newVersion);
database.setTransactionSuccessful();
} catch (Exception e) {
Log.e("TAG", "create or upgrade database error=" + e.getMessage(), e);
} finally {
database.endTransaction();
}
}
}