11

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

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

但我得到一个StackOverflowError. (编辑:我的错,错误在其他地方)。有谁知道如何执行Update()查询?它在 ActiveAndroid 的 wiki 中没有说明任何内容。

编辑:

这个语法是正确的:

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

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

4

3 回答 3

20

这个语法是正确的:

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

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

于 2015-10-23T18:18:44.393 回答
12

基于AndroidActive 的 github:“save 方法适用于插入和更新记录。”
所以,如果你想更新一个项目,首先你必须从数据库中读取它,然后修改它,最后再次保存它。
例如:

Foo for = Foo.load(Foo.class, 1);//1 is the id
foo.bar = "new value";
foo.save();
于 2014-07-03T17:16:28.340 回答
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();
}
于 2015-07-29T12:36:14.567 回答