Dante
Dante

Reputation: 457

Use variable for column name in sql query

I'm searching for a word (variable) that occurs in multiple columns of a table. The search has to return the name of the columns in which the word in found.
I could use a foreach loop to go through each column seperately and know the presence of the word in that particular column when the returned cursor isn't null.
The problem is on how to use two different variables (one for column name and one for the word) in SQL query or rawQuery.

My code is as follows:

String[] columnsList = {"col1","col2","col3"};
String[] wordsList = {"fireman","camper","builder"};
for(String i : wordsList){
   for(String j : columnsList){
      Cursor wordQuery = myDatabaseHandle.rawQuery("Select * from myTableOne WHERE " + j + " = ?",new String[]{i});
      if(!(wordQuery==null)){
       Toast.makeText(this,j+"is success",Toast.LENGTH_SHORT).show();
      }
   }
}

But i'm unable to get the answer. I used a seperate string as:

String queryString = "Select * from myTableOne WHERE " + j ;

and in the query,

Cursor WordQuery = myDatabaseHandle.rawQuery(queryString+" = ?",new String[]{i});

But, it's just toasting the names of all columns.

Upvotes: 0

Views: 761

Answers (1)

Phantômaxx
Phantômaxx

Reputation: 38098

Your error is here:

if(!(wordQuery==null)){

The cursor is never null.

It can contain 0 records, though.
You can check its length by using wordQuery.getCount()

Something like:

if((wordQuery.getCount() > 0)){

Upvotes: 2

Related Questions