sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag summera värde i rumsdatabasen Android

Försök att lägga till nästa metod i din dao:

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

Sedan kan du anropa det från din ViewModel/Activity

UPPDATERA

För en enda metod för uppdatering/infoga lägg dessa metoder i 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)
}

Naturligtvis bör du lägga till metoden updateOrInsertSum till ditt arkiv och visningsmodell också. Om du anropar id ='1' för första gången kommer värdet att infogas:

viewmodel.updateOrInsertSum(Sum(1 ,10000)) // <-- id = 1, value = 10000

Vid nästa anrop kommer objektet att uppdateras med samma metod:

viewmodel.updateOrInsertSum(Sum(1 ,20000)) // <-- id = 1, value = 10000+2000 


  1. välj alla kolumner med gruppera efter i vilolägeskriteriefrågor

  2. Oracle PL/SQL Bulk Collect med Spara undantag Exempel

  3. Ta bort dubblettrader från tabell i Oracle

  4. Är substr eller LIKE snabbare i Oracle?