相关疑难解决方法(0)

如何在不使用SELECT查询的情况下获取Room持久性数据库中具有布尔值true(或1)的行数?

我在我的项目中使用Room持久性数据库.我有一个表,其中有一个布尔值列,如0或1,现在我想要所有布尔值的计数,其值为true(或1).

我知道我可以通过使用where子句获取所有选定行的计数来使用select查询实现此目的!

但我不想使用选择查询与where子句为此,因为它将加载所有行,然后我将得到计数,但我想要计数而不加载任何行!建议其他简单的解决方案!谢谢!

database android boolean-operations booleanquery android-room

16
推荐指数
1
解决办法
1万
查看次数

如何在主线程上的 onCreate/ 中获取房间列表的大小?

如何轻松获得数据库大小的计数,以便我可以根据数据库是否为空执行适当的操作?

我有一个 App DB、视图模型、存储库、Dao 和所有其他部分,并且我的对象插入......但我无法调用onCreate()数据库中列表的大小。当我尝试获取mAppDatabase.vehicleDao().getAll().getValue().size(), 或 时mVehicleViewModel.getAll().getValue().size(),我得到空指针异常。

但是我知道我的对象正在插入,因为当我运行一个 observable 时,我可以记录它们的信息......但我无法在主线程/onCreate 中获得计数。帮助!示例代码如下:

protected void onCreate(Bundle savedInstanceState) {
...
mAppDatabase = AppDatabase.getInstance(MyActivity.this);
Log.d("LISTSIZEAPP", String.valueOf(mAppDatabase.myDao().getAll().getValue().size()));
ObserveItems();
Run Code Online (Sandbox Code Playgroud)

或者

protected void onCreate(Bundle savedInstanceState) {
...
mViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
Log.d("LISTSIZEVM",  String.valueOf(mViewModel.getAll().getValue().size()));
ObserveItems();
Run Code Online (Sandbox Code Playgroud)

^ 两者的空指针异常(尝试在空对象引用上调用接口方法 'java.lang.Object[] java.util.List.toArray()')...

然而:

private void ObserveItems() {
    mViewModel.getAll().observe(this, new Observer<List<Foo>>() {
        @Override
        public void onChanged(@Nullable final List<Foo> foos) {
            mFoos= foos;
            for (Vehicle v: mFoos) {
                Log.d("ROOM INFO - FOOS", v.getFooTitle());
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我可以记录我想要的所有信息。所以这些项目是明确插入的。是什么赋予了?我错过了什么?谢谢你。

java android android-room android-architecture-components android-jetpack

3
推荐指数
1
解决办法
6139
查看次数