jlhonora
jlhonora

Reputation: 10699

ActiveAndroid Update() query

I'm trying to make a bulk update to a column using ActiveAndroid. Here's my code:

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

But I'm getting a StackOverflowError. (Edit: My bad, the error was somewhere else). Does anyone know how to execute an Update() query? It doesn't say anything in ActiveAndroid's wiki.

Edit:

This syntax is correct:

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

You can skip the where if not needed.

Upvotes: 11

Views: 11352

Answers (3)

jlhonora
jlhonora

Reputation: 10699

This syntax is correct:

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

You can skip the where if not needed.

Upvotes: 20

Milad Faridnia
Milad Faridnia

Reputation: 9477

You can also use something like this:

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

where selectField()method is:

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

Upvotes: 1

Justin
Justin

Reputation: 4520

Base on AndroidActive's github: "The save method works for both inserting and updating records."
So, if you want to update an item, first, you must read it from database, then modify it, and finally save it again.
For ex:

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

Upvotes: 12

Related Questions