sql >> Databáze >  >> RDS >> Mysql

Jak mohu sečíst hodnotu v databázi místnosti pro Android

Zkuste do svého dao přidat další metodu:

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

Poté jej můžete vyvolat ze svého ViewModel/Activity

AKTUALIZACE

Pro jednu metodu pro aktualizaci/vložení vložte tyto metody do 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)
}

Samozřejmě byste měli přidat metodu updateOrInsertSum do vašeho úložiště a také do modelu zobrazení. Pokud pak poprvé zavoláte id ='1', bude vložena hodnota:

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

Při příštím volání bude položka aktualizována stejným způsobem:

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


  1. Existuje způsob, jak spustit MySQL v paměti pro testovací případy JUnit?

  2. Aktuální datum v klauzuli WHERE MySQL

  3. Order By on HasMany vztah Laravel 5

  4. Bind IS NULL nebo NULL při použití PHP PDO a MySql