Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да сумирам стойност в стаята база данни за android

Опитайте да добавите следващия метод във вашия 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 към вашето хранилище и модел на изглед. Тогава, ако извикате id ='1' за първи път, ще бъде вмъкната стойност:

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

При следващото извикване елементът ще бъде актуализиран със същия метод:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. com.zaxxer.hikari.pool.PoolInitializationException:Изключение по време на инициализация на пула

  2. MySQL Промяна на потребителска парола

  3. mysql_connect (localhost / 127.0.0.1) бавен на платформата Windows

  4. MySQL заявка намира стойности в низ, разделен със запетая

  5. Съхранявайте списък със стойности (като интереси)