Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

android

I am using query method, but I don't no how to pass more than one selection argument in query method.

My query method should return result as same as this sql statement :

SELECT _id FROM CONATCT_TAGS WHERE TAG1='tagname' OR
                                   TAG2='tagname' OR 
                                   TAG3='tagname' OR 
                                   TAG4='tagname' OR
                                   TAG5='tagname';
like image 378
Pankaj Kumar Avatar asked Jan 21 '11 09:01

Pankaj Kumar


2 Answers

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.

like image 116
dbm Avatar answered Nov 17 '22 07:11

dbm


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.

like image 11
raultm Avatar answered Nov 17 '22 09:11

raultm