当房间数据库为空并尝试运行此查询时,应用程序崩溃并显示空异常
Posted
技术标签:
【中文标题】当房间数据库为空并尝试运行此查询时,应用程序崩溃并显示空异常【英文标题】:Application Crashes and showing null exception when room database is empty and try to run this query 【发布时间】:2021-12-22 18:16:02 【问题描述】:查询:
@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);
【问题讨论】:
【参考方案1】:你可以使用:-
@Query("SELECT coalesce(SUM(productPrice),0) FROM VitalCafeCart")
coalesce
函数使用第一个非空值,因此如果总和为空,则为 0。
或者你可以使用
@Query("SELECT total(productPrice) FROM VitalCafeCart")
total
聚合函数相当于 sum
永远不会返回 null 而是 0.0
【讨论】:
以上是关于当房间数据库为空并尝试运行此查询时,应用程序崩溃并显示空异常的主要内容,如果未能解决你的问题,请参考以下文章
c# RazorPages ModelState Errors 属性为空并导致异常
主机名不能为空并出现错误:任务“:app:uploadCrashlyticsMappingFileRelease”执行失败