Как добавить исходные данные для БД с помощью GreenDao в Android?

Я был этим ответом для вставки исходных данных в собственном режиме

Как добавить исходные данные в базу данных SQLite?

Как я могу получить тот же результат, используя Green dao?

это мой класс приложения

public class App extends Application{


    @Override
    public void onCreate() {

        super.onCreate();
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"Images-bd",null);
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        DaoSession daoSession = daoMaster.newSession();



    }

}

person angel    schedule 08.02.2016    source источник


Ответы (1)


Вы можете создать класс, расширяющий DaoMaster, и выполнять запросы внутри метода onCreate:

public class CustomDaoMaster extends DaoMaster {
    public CustomDaoMaster(SQLiteDatabase db) {
        super(db);
    }

    public static class OpenHelper extends DaoMaster.OpenHelper {
        public OpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
            super(context, name, factory);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            super.onCreate(db);
            db.execSQL("INSERT INTO myTable VALUES('foo')");
            db.execSQL("INSERT INTO myTable VALUES('bar')");
        }
    }
}

Итак, в вашем классе Application вы будете использовать экземпляр этого класса:

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        CustomDaoMaster.OpenHelper helper = new CustomDaoMaster.OpenHelper(this, "Images-bd", null);
        SQLiteDatabase db = helper.getWritableDatabase();
        CustomDaoMaster daoMaster = new CustomDaoMaster(db);
        DaoSession daoSession = daoMaster.newSession();
    }
}
person Allan Pereira    schedule 09.02.2016
comment
Я решил по-другому, расширив openhelper и используя GreenDao внутри него для вставки записей в onCreate. - person angel; 09.02.2016
comment
Будьте осторожны с этим примером! Это правильно (вы также можете переопределить onUpgrade), но это может быть вредно, потому что DevOpenHelper будет удалять и воссоздавать ВСЕ ТАБЛИЦЫ при каждом обновлении версии! В противном случае используйте ... OpenHelper (без Dev-Prefix) - person r00tandy; 06.09.2016