Создание новых баз данных во время выполнения в приложении
У меня есть требование создать новую базу данных для каждого пользователя в приложении и иметь несколько баз данных, которые меняются при переключении пользователей. Поддерживает ли это какой-либо из существующих ORM, таких как GreenDAO, Storio, DbFlow, Realm или аналогичные библиотеки orm/ для Android, или лучше сделать это пешком, определить каждую таблицу и поля самостоятельно и использовать Sqlitedbhelper для генерации каждой базы данных из царапина?
2 ответа
Как разработчик StorIO, я отвечу о поддержке нескольких баз данных в StorIO:
Возможно, StorIO не ограничивает количество баз данных, с которыми вы работаете, просто создайте как можно больше StorIOSQLite
экземпляры по мере необходимости и передать уникальные SQLiteOpenHelper
это будет работать с различными БД для каждого экземпляра StorIOSQLite
, Единственная рекомендация от нашей команды - использовать один экземпляр StorIOSQLite
за БД.
Согласно документации, GreenDAO и DbFlow должны работать с несколькими базами данных.
Похоже, что Realm не позволит вам использовать несколько баз данных, так как это один пакет в их SDK: Realm.getInstance(context)
, Изменить: Realm может обрабатывать несколько баз данных (см. Комментарии к ответу).
Я использовал greenDAO несколько раз, и это выглядит легко. Вы можете посмотреть здесь.
По сути, вы можете указать по имени, какую БД вы хотите использовать при запуске DaoMaster следующим образом:
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "your-db-name", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
// After the initialization, you can get your DAO's and start working
SomeDao someDao = daoSession.getSomeDao();
Я не знаю, знакомы ли вы с greenDAO, но все необходимые классы автоматически генерируются с использованием модуля генератора. Вы можете найти здесь хорошее руководство, объясняющее, как использовать его с Android Studio.