在app中运行时创建新数据库

时间:2015-11-20 21:26:01

标签: android android-sqlite realm greendao storio

我需要为app中的每个用户创建一个新数据库,并且要有多个数据库在用户切换时更改。是否有任何现有的ORM如GreenDAO,Storio,DbFlow,Realm或Android的类似orm /库支持这一点,或者最好是徒步执行此操作,自己定义每个表和字段,并使用Sqlitedbhelper从中生成每个数据库划痕?

2 个答案:

答案 0 :(得分:1)

作为StorIO开发人员,我将回答关于StorIO中多个数据库的支持:

有可能,StorIO不会限制您使用的数据库数量,只需根据需要创建尽可能多的StorIOSQLite个实例,并将唯一可用于不同数据库的SQLiteOpenHelper传递给每个StorIOSQLite的实例。我们团队的唯一建议 - 每个数据库使用一个StorIOSQLite实例。

根据文档,GreenDAO和DbFlow应该能够使用多个数据库。

看起来Realm不允许您使用多个数据库,因为它们是SDK中的单例:Realm.getInstance(context)。编辑:Realm可以处理多个DB(请参阅答案的评论)。

答案 1 :(得分:0)

我已经多次使用过greenDAO,这看起来很简单。你可以看看here

基本上,您可以按名称指定在启动DaoMaster时要使用的db:

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,但所有需要的类都是使用生成器模块自动生成的。你可以找到here一个很好的教程,解释如何在Android Studio中使用它。