@Update如何在Android Room中运行?

时间:2017-12-03 02:54:37

标签: java android sqlite persistence android-room

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:-1)

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

e.g。

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