У меня более 20 полей, насколько сложным будет запрос.
Это может быть очень просто, поскольку сущность определяет объект, например, ваши 20 столбцов, и получить 20 столбцов можнопросто как
@Query(SELECT * FROM thetable)
List<Thetable> getAll();
Вышеуказанное в интерфейсе с аннотацией @Dao и все, что вы делаете в коде - это извлекаете экземпляр из базы данных встроенной комнаты и затем используете метод getAll, который возвращаетСписок объектов Thetable. Каждая из которых содержит все переменные-члены, заполненные из базы данных.
например, вы можете иметь: -
mMyTheTableDaoObject = mMyBuiltRoomDatabase.getAll();
List<TheTable> myTheTableList = mMyTheTableDaoObject.getAll();
for(TheTable t: myTheTableList) {
int current???? = t.get????();
}
При использовании стандартного / некоммерческого пространства вам придется что-то делать в соответствии с: -
SQLitedatabase db = whatever_you_need_to_do_to_get_an_SQLiteDatabase_instance;
Cursor c = db.query("theTable",null,null,null,null,null,null);
ArrayList<TheTable> myTheTableList = new ArrayList();
while(c.moveToNext()) {
currentTheTable = new TheTable();
current.TheTable.setId = c.getLong(c.getColumnIndex("id");
current.TheTable.setNextColumn1 = c.getString("next_column1");
current.TheTable.setNextColumn2 = c.getString("next_column2");
........ another 17 similar lines of code
currentTheTable.setNextColumn20 = c.getString("next_column20");
myTheTableList.add(currentTheTable);
}
for(TheTable t: myTheTableList) {
int current???? = t.get????();
}
Если мы используем SQLite, то если мы уже добавили одну таблицу, а теперь мы хотим добавить другую таблицу, то мы можем просто удалить приложение, и новые таблицы будут сгенерированы, но вЭто не тот случай, когда я пытался сделать то же самое, но он все еще показывает мне, что вам нужно написать миграцию для новой таблицы.
Как только мы перейдем к производству, то имеет смысл написать миграцию длякаждая таблица, но не в режиме разработки.
Вместо миграции просто удалите базу данных (удалите данные приложения или удалите приложение, база данных будет храниться в расположении по умолчанию (data / data / package_name /)базы данных)) и перезапустить без изменения версии. База данных будет создана в соответствии с новой схемой. Возможно, использование временного кода для соответствующей загрузки данных.
Как room DB делает работу разработчика более легкой?
Короче ROOM генерирует то, что называется стандартным кодом из относительно простогокод, например, @Query выше, пишет базовый код для извлечения данных и построения объектов (например, код, как указано выше).