嗨,我正在开发一个Android应用程序,其中我使用的是活动Android。我试图使用迁移将一列添加到表中。我尝试了以下代码:
ALTER TABLE TAGS ADD COLUMN TAG_DATE INTEGER;
它在当前版本上运行良好。但是我有两个旧版本的应用程序。一个
A
已经有标记表,另一个B
没有标记表。因此,当我试图从一个更新到当前版本时,它的工作正常。但是,当我尝试从b转换到当前版本时,在这种情况下,它首先创建一个带有tag_date列的tag model类的标记表,在这种情况下,它会在执行此脚本时给出重复的列错误。所以我想做的是检查列是否已经存在。如果不是,则更改并添加列。
在活动的android脚本中有什么方法可以做到这一点吗?需要帮助。谢谢您。
最佳答案
在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;
}