我不相信这会是一场灾难
xiaomi
问题这似乎是一次不幸的迁移的结果,在迁移过程中,没有添加新的列,随后,用户可能仍然使用表的早期版本。没有其他逻辑解释来解释缺席的列),仅仅是因为
CREATE TABLE
声明有效——也可能无效。
人们仍然可以用它来解决这个问题
ALTER TABLE
那是什么时候
SQLiteException
发生,
addColumnIfNotExists("dialogues", "topChat", "INTEGER DEFAULT 0");
...为了避免由于缺少某些列而删除表而导致数据丢失。
public void addColumnIfNotExists(String tableName, String columnName, String dataType) {
Cursor cursor = null;
try {
cursor = db.rawQuery("SELECT * FROM " + tableName, null);
if(! Arrays.asList(cursor.getColumnNames()).contains(columnName)) {
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s", tableName, columnName, dataType));
}
} finally {
if(cursor != null) {
cursor.close();
}
}
}