Изменение версии GreenDao

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

@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
  Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables");
  dropAllTables(db, true);
  onCreate(db);
}

Я пытался комментировать dropAllTables в приведенном выше коде это не сработало, код восстанавливается при запуске кода? Кто-нибудь знает, как это исправить?

РЕДАКТИРОВАТЬ:
Я видел несколько вопросов, связанных с этой проблемой, но они старые темы не помогли мне.

1 ответ

Решение

Вы можете продлить DaoMaster.DevOpenHelper и обеспечить собственную реализацию onUpgrade,

Реализуйте свой собственный DevOpenHelper

public class MyOpenHelper extends DaoMaster.DevOpenHelper {

    //..
    //override the constructor here by calling super
    //..

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        switch(oldVersion) {
        case 1:
            //upgrade logic from version 1 to 2
            /* break was omitted by purpose. */
        case 2:
            //upgrade logic from version 2 to 3
            /* break was omitted by purpose. */
        case 3:
            //upgrade logic from version 3 to 4
            break;
        default:
            throw new IllegalStateException(
                    "unknown oldVersion " + oldVersion);
        }
    }
}

Создайте свой класс

DaoMaster.DevOpenHelper helper = new MyOpenHelper(this, databaseName, null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);

Для более подробной информации, посмотрите, как я это сделал здесь.

Другие вопросы по тегам