gpt4 book ai didi

android - 我如何在房间数据库Android中求和

转载 作者:行者123 更新时间:2023-12-02 12:40:02 24 4
gpt4 key购买 nike

我想知道如何在 session 室数据库中求和。
假设我已经在房间数据库中插入了这个值(10,000),并且我想向数据库(20,000)中插入新值,并且我希望新值与旧值相加而不是替换它。
我怎样才能做到这一点 。?
代码示例:
数据库表:

@entity 
class sum (

id : int ,
value : Long )

Dao :

@insert (onConflict = OnConflictStrategy.REPLACE)
suspend fun insert (model :sum)

what shoud i use instead of above insert .


@Query("SELECT * FROM sum")

fun getall () : LiveData<sum>

并在 Activity 中:
late init var : viewmodel : Viewmodeldatabase 
val textvalue : TextView

viewmodel = Viewmodelprovider(this).get(Viewmodeldatabase::class.java)

textvalue = findvidwbyid(R.id.text)
viewmodel.insert(sum(1 , 10000)

// when the above value insert , if there is an old value sum with it and not replace it or remove it

viewmodel.getall.observe(this , Observer {

textvalue.text = it.value


)}
谢谢你们的家伙看我的代码,并帮助我。

最佳答案

尝试在dao中添加下一个方法:

@Query("UPDATE sum SET value = value + :addValue WHERE id =:id")
suspend fun updateSum(id: Int, addValue: Long)
然后您可以从ViewModel / Activity中调用它
更新
对于单个更新/插入方法,请将这些方法放在dao中:
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertSum(model: Sum)

@Query("UPDATE sum SET value = value + :value WHERE id = :id")
suspend fun updateSum(id: Int, value: Long)

@Query("SELECT * FROM sum WHERE id = :id")
suspend fun getSumById(id: Int): Sum?

@Transaction
suspend fun updateOrInsertSum(sum: Sum) { // <-- this method updates value or insert new item, if id is not found
getSumById(sum.id)?.let { updateSum(sum.id, sum.value) } ?: insertSum(sum)
}
当然,您还应该将 updateOrInsertSum方法添加到存储库和viewmodel中
然后,如果您首次要求id ='1',则将插入值:
viewmodel.updateOrInsertSum(Sum(1 ,10000)) // <-- id = 1, value = 10000
在下一个通话项目中,将使用相同的方法进行更新:
viewmodel.updateOrInsertSum(Sum(1 ,20000)) // <-- id = 1, value = 10000+2000 

关于android - 我如何在房间数据库Android中求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63892254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com