当前位置: 首页 > 面试题库 >

会议室数据库强制执行OnCreate回调

金高飞
2023-03-14
问题内容

我正在使用RoomDatabase开发一个应用程序,该应用程序需要预先填充其数据;我已经设法通过添加onCreate()回调来做到这一点,但是只有在第一次访问数据库时才调用它(例如调用Daos函数之一)。

有没有办法在不执行任何读或写操作的情况下强制数据库创建?

那是我的代码,MyDatabase.get()被称为App.onCreate()

@Database(entities = {Entity1.class, Entity2.class}, version = 1, exportSchema = true)
public abstract class MyDatabase extends RoomDatabase {

    private static MyDatabase sInstance;

    public synchronized static TaxCodeDatabase get(Context context) {
        if (sInstance == null) {
            sInstance = buildDatabase(context);
        }
        return sInstance;
    }

    private static MyCodeDatabase buildDatabase(final Context context) {
        return Room.databaseBuilder(context,
                MyCodeDatabase.class,
                "my-database")
                .addCallback(new Callback() {
                    @Override
                    public void onCreate(@NonNull SupportSQLiteDatabase db) {
                        super.onCreate(db);
                        sInstance.preFillData(context);
                      });
                    }
                })
                .build();
    }

    public abstract Entity1Dao entity2Dao();

    public abstract Entity2Dao entity1Dao();

    /**
     * Populates the database with a series of initial data
     *
     * @param aContext
     */
    public void prePopulateData(Context aContext) {
        //Populate database here
    }

问题答案:

有没有办法在不执行任何读或写操作的情况下强制数据库创建?

不,对不起

但是,没有什么可以阻止您在调用Room之前将预先填充的数据库复制到适当位置。您将需要确保预先填充的数据库中包含Room的元数据(例如,通过使用Room本身创建该数据库)。



 类似资料:
  • 企业会议室管理系统,帮助企业高效有秩序的组织会议,打通了预订会议室、会议通知、会议签到的会议完整流程。此次新版智能会议室增加审批和会议室使用权限等功能,实现更高效、智能化的企业会议室管理方案。 录入会议室 手机上录入会议室 入口:工作-智能会议室-设置会议室-会议室管理 选中工作台选择智能会议室 选择会议室管理 进入会议室管理 添加会议室 电脑上录入会议室 入口:企业管理后台-工作台-智能会议室

  • 问题内容: 假设我有一个简单的Room数据库: 现在,我要添加一个新实体:并将版本增加到2: 当然,Room会引发异常: 假设我没有更改类(因此所有数据都是安全的),我必须提供仅创建一个新表的迁移。因此,我正在研究Room生成的类,搜索生成的查询以创建我的新表,将其复制并粘贴到迁移中: 但是,我发现手动进行操作很不方便。有没有办法告诉Room: 我没有触摸任何现有表,因此数据是安全的。 请为我创建

  • 问题内容: 我需要通过使用带有Dao Class的sqllite房间查询来编写此查询。I.getItemID()是一个动态变量。 问题答案: 请查看此链接,以获取有关使用房间访问数据的更多信息。

  • 我正在尝试使用新房间的图书馆,但我遇到了这个错误 错误:查询有问题:[SQLITE_ERROR]SQL错误或缺少数据库(没有这样的表:Station) 错误:不确定如何将游标转换为此方法的返回类型 MyDao.kt 实体

  • Spring中的数据库有一些不确定的行为。有时,会生成两次,因此初始化失败。 由:org.springframework.beans.beanInstantiationException引起:无法实例化[javax.sql.DataSource]:工厂方法“Data Source”引发异常;嵌套异常是org.springframework.jdbc.datasource.init.scriptSt

  • 我想使用Jitsi-meet-API创建一个聊天室(https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-iframe)在房间有密码之前。 我遇到的问题是,pwd只有在会议活跃时才有效。我不能提前计划。Jitsi API没有我可以使用的事件或选项。 下面是我用来构造Jitsi对象的代码。但是房间马上就被创建了,当启动房间的窗口关闭时,所