ActiveAndroid Update()查询

时间:2014-04-10 19:30:57

标签: android android-sqlite activeandroid

我尝试使用ActiveAndroid对列进行批量更新。这是我的代码:

new Update(SomeModel.class).set("Enabled = 0").execute();

但我得到StackOverflowError(编辑:我的错,错误在其他地方)。有谁知道如何执行Update()查询?它在ActiveAndroid的维基中没有任何说法。

编辑:

这种语法是正确的:

new Update(SomeModel.class)
  .set("Enabled = 0")
  .where("Account = ?", account.getId())
  .execute();

如果不需要,您可以跳过where

3 个答案:

答案 0 :(得分:17)

这种语法是正确的:

new Update(SomeModel.class)
  .set("Enabled = 0")
  .where("Account = ?", account.getId())
  .execute();

如果不需要,您可以跳过这里。

答案 1 :(得分:11)

基于AndroidActive's github:"保存方法适用于插入和更新记录。"
因此,如果要更新项目,首先必须从数据库中读取它,然后修改它,最后再次保存。
对于前:

Foo for = Foo.load(Foo.class, 1);//1 is the id
foo.bar = "new value";
foo.save();

答案 2 :(得分:1)

您也可以使用以下内容:

SomeModel model = selectField("fieldName", "fieldValue");
model.field = newValue;
model.save();

其中selectField()方法是:

public static SomeModel selectField(String fieldName, String fieldValue) {
    return new Select().from(SomeModel.class)
            .where(fieldName + " = ?", fieldValue).executeSingle();
}