【问题标题】:Create new databases on runtime in app在应用程序运行时创建新数据库
【发布时间】:2015-11-20 21:26:01
【问题描述】:

我需要为应用程序中的每个用户创建一个新数据库,并拥有多个在用户切换时更改的数据库。是否有任何现有的 ORM,如 GreenDAO、Storio、DbFlow、Realm 或类似的 Android orm/libraries 支持此功能,或者最好步行执行此操作,由我自己定义每个表和字段,并使用 Sqlitedbhelper 从生成每个数据库从头开始?

【问题讨论】:

  • 好吧,您可以使用给定的配置打开领域实例,您可以在其中指定领域的名称;从而使用户拥有自己的领域......这将为您提供的任何新名称创建一个新的领域文件

标签: android android-sqlite realm greendao storio


【解决方案1】:

作为 StorIO 开发者,我将回答有关 StorIO 中多数据库支持的问题:

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

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

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

【讨论】:

  • 完全可以在一个应用程序中使用多个领域数据库实例。您只需在获取新领域实例时提供不同的配置(请参阅“配置领域”realm.io/docs/java/latest
  • Artem 你的回购中有一些类似的例子吗?
  • @RobertoArtilesAstelarra 对不起!我已经确定了答案。很棒,Realm 可以做到这一点。
  • @ddog 不,但我认为它没有任何问题。只需在 SQLiteOpenHelper 构造函数中接受 DB 名称,您将拥有一个用于多个 DB 的 SQLiteOpenHelper 实现。
  • Tnx 为答案,我将尝试使用 greenDao 和 Storio,并尝试看到最适合我需要的女巫
【解决方案2】:

我已经多次使用 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 一起使用。

【讨论】:

  • 我一年前用过一次GreenDao,现在看到2.0版本出来了,你的回答看起来不错,我会考虑的。
猜你喜欢
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 2018-12-12
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多