ActiveAndroid添加列,检查是否存在

时间:2016-02-17 11:15:20

标签: android sqlite activeandroid

您好我正在开发我正在使用活动Android的Android应用程序。我尝试使用迁移向表中添加一列。我尝试使用以下代码:

ALTER TABLE TAGS ADD COLUMN TAG_DATE INTEGER;

它在当前版本上运行良好。但我有两个旧版本的应用程序。一个A已经有TAG表,另一个B没有TAG表。 因此,当我尝试从A更新到当前版本时,它的工作正常。但是当我在这种情况下从B尝试到当前版本时,它首先使用TAG模型类创建TAG表,该TAG模型类具有TAG_DATE列,在这种情况下,它在执行此脚本时给出了重复的列错误。那么我想做什么我想检查列是否已经存在。如果没有,则更改并添加列。

有没有办法在active-android脚本中执行此操作。需要一些帮助。谢谢。

1 个答案:

答案 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;
}