Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从房间数据库总和查询中获取空值,数据可用_Android_Kotlin_Android Room_Android Livedata - Fatal编程技术网

Android 从房间数据库总和查询中获取空值,数据可用

Android 从房间数据库总和查询中获取空值,数据可用,android,kotlin,android-room,android-livedata,Android,Kotlin,Android Room,Android Livedata,我的dao中有两个函数 @Query("select sum(amount) as sum, dateString from databasetransaction where txnType='A' group by dateString") fun getExpensesTransaction(): LiveData<List<TxnByDate>> @Query("select COALESCE(sum(COALESCE(amount,0)

我的dao中有两个函数

    @Query("select sum(amount) as sum, dateString from databasetransaction where txnType='A' group by dateString")
    fun getExpensesTransaction(): LiveData<List<TxnByDate>>

    @Query("select COALESCE(sum(COALESCE(amount,0)), 0) from databasetransaction")
    fun getTotal() : LiveData<Int>

对于第二个查询,我得到的值为null,有人能帮我一下吗?我在这里做错了什么?

我怀疑问题可能不是查询本身,而是处理结果并将其放入Int中

我认为您根本不需要合并,当然不需要两次,因为聚合函数与求和函数的不同之处在于它不返回null,如下所示:-

sum()和total()聚合函数返回组中所有非空值的总和。如果没有非空的输入行,则sum()返回NULL,但total()返回0.0

上述结果正是我所怀疑的。您将得到一个带有小数点的浮点,然后无法将其转换为Int,并返回null

您可以尝试使用:-

SELECT CAST(total(amount) AS INTEGER) from databasetransaction;

解决了它,这实际上是我的viewmodel的问题,我没有使用从第二次查询中获得结果的变量,因此,它是空的,只要我将observer放在上面或进行数据绑定,它就开始工作。您可以添加视图模型类吗。因为我也面临同样的问题。
SELECT CAST(total(amount) AS INTEGER) from databasetransaction;