Skip to content

Querying the database

Mark Mooibroek edited this page May 26, 2013 · 4 revisions

All queries in ActiveAndroid use the query builder syntax, or the Model.query() method.

Let's look at some queries by adding to our model. Here's what we have so far:

@Table(name = "Items") public class Item extends Model { @Column(name = "Name") public String name; @Column(name = "Category") public Category category; }

It would be nice if we could get a random item from the database. Let's add a method to do that.

public static Item getRandom() { return new Select().from(Item.class).orderBy("RANDOM()").executeSingle(); }

Building a query in ActiveAndroid is like building a normal SQL statement. We create a new select object, call from and pass in the Item class. We then call orderBy, passing in "RANDOM". To execute a query we call execute(), or in this case executeSingle().

If we only want to get items from a certain category, we pass in a string for our where class argument. The method would look like this:

public static Item getRandom(Category category) { return new Select()	.from(Item.class)	.where("Category = ?", category.getId())	.orderBy("RANDOM()")	.executeSingle(); }

And here's how we get all the items in a category, sorted by name.

public static List<Item> getAll(Category category) { return new Select()	.from(Item.class)	.where("Category = ?", category.getId())	.orderBy("Name ASC")	.execute(); }

Next, let's explore Type serializers.

Clone this wiki locally