3 votes

La méthode de suppression de la base de données des chambres ne fonctionne pas

J'ai une méthode DAO comme celle-ci

@Query("DELETE FROM Weather WHERE name = :name")
Completable deleteDataByName(String name);

Objet du temps

@Entity
public class Weather {

    @PrimaryKey(autoGenerate = true)
    public int id;
    public String name;
    public String date;
    public String description;
    public String icon;
    etc.

Les données ne sont pas supprimées lorsque j'appelle deleteDataByName méthode. Comment puis-je y remédier ? Il y a 16 objets Météo dans la base de données avec le même nom. Comment puis-je les supprimer ? enter image description here

enter image description here

enter image description here

0voto

Ruthwik Warrier Points 169

J'ai eu le même problème et il est résolu en utilisant les composants androidx. Essayez avec les composants de chambre mis à jour

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation "androidx.room:room-ktx:$room_version"

    // optional - RxJava support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

0voto

Vous devez probablement utiliser une version de chambre supérieure ou égale à 2.1.0. Si vous utilisez gradle pour construire votre application, allez dans le fichier gradle du projet et ajoutez ces lignes :

ext {
    roomVersion = '2.1.0-rc01'
}

Ensuite, vous pouvez mettre à jour votre dépendance de chambre dans l'application gradle avec ceci :

implementation "androidx.room:room-rxjava2:2.1.0"
implementation "androidx.room:room-runtime:$rootProject.roomVersion"

Vous pouvez également trouver plus d'informations aquí .

EDITAR Il s'agit d'une application gradle complète dont vous avez probablement besoin (plus vos autres dépendances) :

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

android {
  ...
}

allprojects {
    repositories {
        ...
    }
}

dependencies {

    // Room components
    implementation "androidx.room:room-runtime:$rootProject.roomVersion"
    implementation "androidx.room:room-rxjava2:2.1.0"
    kapt "androidx.room:room-compiler:$rootProject.roomVersion"
}

0voto

ror Points 611

J'ai lu votre commentaire :

private void getDeleteByName(String city) { mAppDatabase.getWeatherDao().deleteDataByName(city); } – Vadim Fedchuk 2 days ago

Tu ne l'appelles pas comme il faut. Votre mAppDatabase.getWeatherDao().deleteDataByName(city) ne fera rien par lui-même, c'est complétable. Vous devez y souscrire pour qu'il fonctionne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X