【问题标题】:How do I update certain columns within an entity in a Room database?如何更新 Room 数据库中实体中的某些列?
【发布时间】:2018-03-15 01:24:12
【问题描述】:

不是将一个新的实体对象作为 arg 传入 DAO 接口函数以在通过其主键引用它时更新一行数据,有没有办法只更新一个特定数量的列实体而不是所有列?我尝试只更新实体的几列,但无济于事,如下所示:

@Query("UPDATE media SET name = :name AND description = :description" +
        " AND uri = :uri AND text = :text AND media_type = :mediaType" +
        " WHERE id = :id")
fun update(id: Int, name: String, description: String, uri: String, text: String, mediaType: String)

...显然“AND”关键字不起作用,因为只有第一个参数“name”被更新了。

【问题讨论】:

    标签: android android-sqlite android-room android-database android-architecture-components


    【解决方案1】:

    试试:

    "UPDATE media SET name = :name, description = :description," +
            " uri = :uri, text = :text, media_type = :mediaType" +
            " WHERE id = :id"
    

    有关UPDATE 语法的更多信息,请参阅the SQLite documentation

    【讨论】:

    • 我有一个与 UPDATE 和 SET 类似的用例,我用 AsyncTask() 调用它,因为 Room 需要一个用于 CRUD 的后台线程。您能否建议在存储库中设置调用的正确方法:stackoverflow.com/questions/57340870/…
    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多