【问题标题】:How does @Update work in Android Room?@Update 如何在 Android Room 中工作?
【发布时间】:2017-12-03 02:54:36
【问题描述】:

我在 Room 数据库中有数据,我想检查它是否等于某些数据并相应地更新一行,例如:

if (dataInDatabase.equals(providedData)) { 
      // update existing data.
}

我唯一拥有的@PrimaryKey 是一个自动生成的ID,并且没有@ForeignKeys。我知道现有数据只能使用@PrimaryKey 更新,但我检查的数据不是@PrimaryKeys。解决这个问题的最佳方法是什么?我如何迭代和使用.equals() 方法来迭代数据库中的所有数据并在满足条件时更新某些行?

【问题讨论】:

    标签: java android sqlite persistence android-room


    【解决方案1】:

    如果您的查询是简单的 CRUD(创建、读取、更新和删除)操作,Room 为您提供了使用注释的机会。但是,如果您觉得您的查询更具体,您可以选择定义一种方法来处理您想要的目标,并使用@query() 注释对其进行注释,并将您的 SQL 查询作为参数传递给它。

    根据您的情况,您可以考虑使用类似

    的方法
    @query("put your update query here")
    udateMytable(String data);   // pass the data to this method as its arguments 
    

    【讨论】:

      【解决方案2】:

      您可以使用以下代码进行更新 有一个可用于更新 @Update 的注释。这将更新您在数据库中的数据。

      例如

       @Update
          public void updateUsers(User... users);
      

      【讨论】:

        猜你喜欢
        • 2019-11-22
        • 2017-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-06
        相关资源
        最近更新 更多