baekacaek
baekacaek

Reputation: 1557

Android database query with multiple selection

I know how to query for a single selection with the following:

Cursor cursor = database.query(true, TABLE, COLUMNS, "name = ?", new String[]{"Bob"},null,null,null,null);

But suppose I want to make a function as follows:

public Cursor queryNames(String[] names) 

where the function returns a cursor where the name = names[0] OR name = names[1] ... etc. So for example, if I called the function queryNames(new String[] {"Alice","Bob","Charlie"}), the function should return a cursor where the name is any of the three (Alice, Bob, or Charlie). How would I write this? Thanks!

Upvotes: 0

Views: 1377

Answers (2)

Jonathan Kramer
Jonathan Kramer

Reputation: 89

Your method might want to look like this:

   public Cursor queryNames(String[] names) {

       SQLiteDatabase mDb = this.getReadableDatabase();

       String whereStatement = "";
       for(int i = 0; i < names.length; i++) {
           if (i != (names.length - 1))
               whereStatement = whereStatement + "name = ? OR "
           else
               whereStatement = whereStatement + "name = ?"

       Cursor cursor = mDb.query(true, TABLE, COLUMNS, whereStatement, names, null, null, null, null);

       if (cursor != null)
           cursor.moveToFirst();

       mDb.close();

       return cursor;

   }

Hope this helps!

Upvotes: 1

emaNoN
emaNoN

Reputation: 144

try:

Cursor cursor = db.query(true, TABLE, COLUMNS, "name IN (?)", new String[]{" 'moe', 'larry', 'curly'"}, null, null, null, null);

It would probably be best to build the String[] separately than to guess at the number of names. Enclose the whole thing in double quotes, the individual names in single quotes, comma-separated.

Upvotes: 0

Related Questions