会议室数据库的删除方法不起作用

时间:2019-07-01 11:25:19

标签: java android android-room

我有这样的DAO方法

.atom nth-child(1):after

天气对象

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

当我调用@Entity public class Weather { @PrimaryKey(autoGenerate = true) public int id; public String name; public String date; public String description; public String icon; etc. 方法时,数据不会被删除。 我该如何解决? 数据库中有16个同名的Weather对象 如何删除它们? enter image description here

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过使用androidx组件解决了。尝试使用更新的房间组件

    // 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"

答案 1 :(得分:0)

可能您需要使用高于或等于2.1.0的房间版本 如果您使用gradle构建应用,请转到项目gradle文件并添加以下行:

ext {
    roomVersion = '2.1.0-rc01'
}

然后,您可以使用以下方法在应用程序gradle中更新您的房间依赖性:

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

您还可以找到更多信息here

编辑 这是您可能需要的完整应用gradle(以及您的其他依赖项):

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"
}

答案 2 :(得分:0)

我阅读了您的评论:

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

您的说法不正确。您的mAppDatabase.getWeatherDao().deleteDataByName(city)本身不会做任何事情,可以完成。您必须订阅它才能使其正常工作。