您好我正在开发我正在使用活动Android的Android应用程序。我尝试使用迁移向表中添加一列。我尝试使用以下代码:
ALTER TABLE TAGS ADD COLUMN TAG_DATE INTEGER;
它在当前版本上运行良好。但我有两个旧版本的应用程序。一个A
已经有TAG表,另一个B
没有TAG表。
因此,当我尝试从A更新到当前版本时,它的工作正常。但是当我在这种情况下从B尝试到当前版本时,它首先使用TAG模型类创建TAG表,该TAG模型类具有TAG_DATE列,在这种情况下,它在执行此脚本时给出了重复的列错误。那么我想做什么我想检查列是否已经存在。如果没有,则更改并添加列。
有没有办法在active-android脚本中执行此操作。需要一些帮助。谢谢。
答案 0 :(得分:1)
在你的onCreate Application.class
中ActiveAndroid.initialize(this);
DBHelper.createIfNeedColumn(YOUR_ORM_CLASS, COLUMN_KEY);
和DBHelper.class静态类
public static boolean createIfNeedColumn(Class<? extends Model> type, String column) {
boolean isFound = false;
TableInfo tableInfo = new TableInfo(type);
Collection<Field> columns = tableInfo.getFields();
for (Field f : columns) {
if (column.equals(f.getName())) {
isFound = true;
break;
}
}
if (!isFound) {
ActiveAndroid.execSQL("ALTER TABLE " + tableInfo.getTableName() + " ADD COLUMN " + column + " TEXT;");
}
return isFound;
}