2016-02-17 3 views
2

Привет Я разрабатываю приложение для Android, в котором я использую активный Android. Я попытался добавить один столбец в свою таблицу, используя миграцию. Я пробовал со следующим кодом:ActiveAndroid добавление столбца с проверкой если существует или нет

ALTER TABLE TAGS ADD COLUMN TAG_DATE INTEGER; 

Его рабочий тон в текущей версии. Но у меня есть две старые версии моего приложения. Один A уже имеет таблицу TAG и другой B, не имеющий таблицы TAG. Итак, когда я попытался обновить от A до текущей версии, тогда он работает нормально. Но когда я попробовал от B до текущей версии, в этом случае он сначала создает таблицу TAG с классом модели TAG, который имеет столбец TAG_DATE, в этом случае он дает мне дублируемую ошибку столбца при выполнении этого скрипта. Итак, что я хочу сделать, я хочу проверить, существует ли столбец или нет. Если нет, то измените и добавьте столбец.

Есть ли способ сделать это в сценариях active-android. Нужна помощь. Спасибо.

+0

Не могли бы вы поделиться ответ на свой вопрос? –

+0

Прошу прощения, сэр. Пока нет ответа. – nilkash

+0

@nilkash Не тот, что вы ищете? https://github.com/pardom/ActiveAndroid/issues/294 – TetianaDev

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^