【问题标题】:Room Database update issue房间数据库更新问题
【发布时间】:2018-05-07 13:09:32
【问题描述】:

在 android Room 中更新实体的多个字段。

我正在为我的新项目使用 android 房间持久性库。我想更新表的多个字段。我已经在我的道中尝试过 -

@Query(" UPDATE " + TABLE_ACC_NO_DEBIT_CARD_LINK + " SET id = :id , device_id = :device_id 
,transaction_key = :transaction_key , mobile = :mobile , email = :email 
,account_no = :account_no , debit_card = :debit_card , bank = :bank 
,is_uploaded = :is_uploaded WHERE device_id = :device_id AND account_no=:account_no")

int updateAccNoDebitCardLink( String device_idc, String account_noc
,String id,String device_id ,String transaction_key
,String mobile,String email,String account_no,String debit_card, String bank
,String is_uploaded);

例如

@Query(UPDATE TABLENAME <place_holder>)
int updateObject(ObjetEntity objectEntity,String field);

我应该通过什么来代替 ,以便将新的 objectEntity 替换为字段值匹配的旧 objectEntity

【问题讨论】:

  • 到底是什么问题?为什么不确定表名?
  • 自定义更新查询中有没有选项 //Custom Update @Query(UPDATE TABLENAME ????) int updateObject(ObjetEntity objectEntity,String field);而不是一一设置行名。

标签: java android


【解决方案1】:

试试这个代码..

@Update
void updateData(MyTable myTable);

并将所有数据放入 myTable 类对象中,并将其传递给 updateData 方法..

    @Query("update Comment set fname=:fname where id=:id")
void update data(String fname,int id);

【讨论】:

  • 实际上我想用 where 条件更新整行。一一设置名称是不可行的,所以有什么选择吗??
【解决方案2】:

尝试以这种方式更新表的值。下面是 kotlin 语言的例子。

   @Query("UPDATE Test SET test_name=:arg1,test_startDate=:arg2,test_endDate=:arg3,test_location=:arg4 WHERE testId = :arg0")
   fun updateTest( testId: Int,testName:String,testStartTime:String,testEndTime:String,testLocation:String)

这里的testId, test_name,test_startDate,test_endDate,test_location是Test表的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多