Создание новых баз данных во время выполнения в приложении

У меня есть требование создать новую базу данных для каждого пользователя в приложении и иметь несколько баз данных, которые меняются при переключении пользователей. Поддерживает ли это какой-либо из существующих 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.

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