使用DBFlow更新整个对象

时间:2017-09-06 13:56:15

标签: android dbflow

我在Android项目中使用DBFlow,我想知道是否有更新整个对象的方法,而不是指定每个列,如下所示

// Native SQL wrapper
SQLite.update(Ant.class)
  .set(Ant_Table.type.eq("other"))
  .where(Ant_Table.type.is("worker"))
  .and(Ant_Table.isMale.is(true))
  .async()
  .execute(); // non-UI blocking

来自指南 https://agrosner.gitbooks.io/dbflow/content/SQLiteWrapperLanguage.html

更新的“设置”部分支持不同类型的值:

  1. ContentValues - >转换为键/值作为is()/ eq()
  2. 的SQLOperator
  3. SQLOperator,它们组合在一起作为SET语句的一部分。
  4. 基于此,我尝试将ContentValues传递给set方法

    // Native SQL wrapper
    SQLite.update(Ant.class)
      .set(contentValues)
      .where(Ant_Table.type.is("worker"))
      .and(Ant_Table.isMale.is(true))
      .async()
      .execute(); // non-UI blocking
    

    我收到编译错误

    set (com.raizlabs....SQLOperator...) in Update cannot be applied 
    to (android.content.ContentValues)
    

1 个答案:

答案 0 :(得分:0)

你需要这样称呼它:

SQLite.update(Ant.class)
  .set().conditionValues(contentValues)
  .where(Ant_Table.type.is("worker"))
  .and(Ant_Table.isMale.is(true))
  .async()
  .execute(); 

源代码中的文档不清楚,但它应该以这种方式工作。