How to pass two or more selection argument in "query" method

If you want to use the built-in optimization in the Android SQLite connection you could do something like this instead:

String table = "CONTACT_TAGS";
String[] columns = {"_id"};
String where = "TAG1=? OR TAG2=? OR TAG3=? OR TAG4=? OR TAG5=?";
String[] args = {"tagname", "tagname", "tagname", "tagname", "tagname"};

SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query(table, columns, where, args, null, null, null);

The difference from @raultum's solution is that you let the database connector decide how to interpret the submitted data. This is extra interesting from a security perspective.


Try something like that..

SQLiteDatabase db = YourDatabaseHelper.getReadableDatabase();
String TABLE = "CONTACT_TAGS";
String[] FIELDS = { "_id" };
String WHERE =  "TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR TAG4='tagname' OR TAG5='tagname' ";
// Execute
cursor = db.query(TABLE, FIELDS, WHERE, null, null, null, null);

If you read the documentation of the Cursor.query() method you find the definition for selection as follows:

selection: A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given table.


You can use it like that

String strSelection = android.provider.CallLog.Calls.TYPE + " = " + CallLog.Calls.MISSED_TYPE+ " OR " + android.provider.CallLog.Calls.TYPE + " = " + CallLog.Calls.INCOMING_TYPE ;

Tags:

Android