当房间数据库为空并尝试 运行 此查询时,应用程序崩溃并显示空异常

Application Crashes and showing null exception when room database is empty and try to run this query

查询:

@Query("SELECT SUM(productPrice) FROM VitalCafeCart")
    LiveData<Integer> getSum();

当数据库中有行时,此操作的结果很好。 我正在使用观察者来获得结果。

这里是观察者代码。

LiveData<Integer> sum = AppDatabase.getInstance(mContext).atcDao().getSum();
            Observer<Integer> cartTotalObserver = new Observer<Integer>() {
                @Override
                public void onChanged(Integer integer) {

                        if (integer == 0) {
                            linearGotoCart.setVisibility(View.GONE);
                        } else {
                            shopDetailsTotalPrice.setText("Rs."+String.valueOf(integer));
                            linearGotoCart.setVisibility(View.VISIBLE);
                        }

                }
            };
            sum.observe(getActivity(), cartTotalObserver);

你可以使用:-

@Query("SELECT coalesce(SUM(productPrice),0) FROM VitalCafeCart")

coalesce 函数使用第一个非空值,因此如果总和为空则为 0。

或者您可以使用

@Query("SELECT total(productPrice) FROM VitalCafeCart")

total 聚合函数等效于 sum 从不返回 null 而是返回 0.0