imin
imin

Reputation: 4578

android sqlite query with multiple where

Here's my current sqlite code:

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + 
                " where " + KEY_ownerID + " = ? ", new String[] { ownerID});

It works fine, but when I tried adding multiple where to something like this:

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + 
                " where " + KEY_ownerID + " = ?, " + KEY_partnerID + " = ?, " + KEY_advertiserID + " = ?, " + KEY_chefID + " = ?", new String[] { ownerID, partnerID, advertiserID, chefID });

It returns an error. So how do I deal with multiple ?

Upvotes: 16

Views: 37318

Answers (4)

jeet
jeet

Reputation: 29199

change query to:

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " +
TABLE_RECIPE_NAME + " where " + KEY_ownerID + " = ? AND " + KEY_partnerID +
" = ? AND  " + KEY_advertiserID + " = ? AND " + KEY_chefID + " = ?",
new String[] { ownerID, partnerID, advertiserID, chefID });

Upvotes: 47

Kailas Bhakade
Kailas Bhakade

Reputation: 1922

You are doing correct but just need to use AND or OR keyword between each where condition as per your requirement. So try using this once.

Upvotes: 6

Suragch
Suragch

Reputation: 512706

Use AND and OR for multiple WHERE clauses. Use parentheses if logical grouping or order is needed.

SELECT *
FROM employees
WHERE (last_name = 'Smith' AND first_name = 'Jane') OR (employee_id = 1); 

(source)

Note

  • This supplemental answer omits the Android code formatting because it makes the SQL hard to read and understand. The reader can do their own formatting.

Upvotes: 3

Lalit Poptani
Lalit Poptani

Reputation: 67296

Probably you have to use AND. You want a query that should return the value in Cursor populated with comparing multiple values. So, you just need to use AND. Instead of using a comma(,). Above answer seems correct but it just lacks the explanation.

Upvotes: 2

Related Questions