Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je additionner la valeur dans la base de données de la salle Android

Essayez d'ajouter la méthode suivante dans votre dao :

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

Ensuite, vous pouvez l'appeler depuis votre ViewModel/Activity

MISE À JOUR

Pour une seule méthode de mise à jour/insertion, mettez ces méthodes dans 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)
}

Bien sûr, vous devez ajouter la méthode updateOrInsertSum à votre référentiel et à votre modèle de vue égalementEnsuite, si vous appelez id ='1' pour la première fois, une valeur sera insérée :

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

Lors du prochain appel, l'élément sera mis à jour avec la même méthode :

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