views:

45

answers:

1

I'm trying to query a word, for this Im using the db.query method. But I want use a where clause, I've done like this on my code, but, the emulator returns an error.

public String select(String wrd) {
  String list = new String();
  Cursor cursor = this.db.query(TABLE_NAME, new String[] {"word"}, 
    "word like " + wrd + "", null, null, null, "id desc");
  if (cursor.moveToNext()) {
     do {
        list = cursor.getString(0); 
     } while (cursor.moveToNext());
  }
  if (cursor != null && !cursor.isClosed()) {
     cursor.close();
  }
  return list;

}

Im calling this method in other class, parsing a String argument.

Cursor cursor = getContentResolver().query(CONTENT_URI, null, null, null, null);                                    
        String body;                                        
        if(cursor.moveToFirst()){
            body = cursor.getString(cursor.getColumnIndexOrThrow("body")).toString();
            if(body == ""){
                Toast.makeText(getBaseContext(), "There is no words to save!", Toast.LENGTH_LONG).show();
            }
                else{
                    String words = this.dh.select("Testando");
                    StringTokenizer st = new StringTokenizer(body);
                    while(st.hasMoreTokens()){
                         if(words == st.nextToken())
                         Toast.makeText(getBaseContext(), "found! "+words+"", Toast.LENGTH_LONG).show();
                         this.dh.insert(st.nextToken());                             
                         Toast.makeText(getBaseContext(), "The set of words has been updated!", Toast.LENGTH_LONG).show();                                                                                                              
                    }                       
                    StringBuilder sb = new StringBuilder();
                    sb.append("Set of words:\n\n");
                    sb.append(words + " ");                    
                    txtView.setText(sb.toString());
                }
        }  
+1  A: 

I believe the problem has to do with the double-quotes in the below code:

Cursor cursor = this.db.query(TABLE_NAME, new String[] {"word"}, 
    "word like " + wrd + "", null, null, null, "id desc");

Try this

Cursor cursor = this.db.query(TABLE_NAME, new String[] {"word"}, 
    "word like \"" + wrd + "\"", null, null, null, "id desc");

Or even better

Cursor cursor = this.db.query(TABLE_NAME, new String[] {"word"}, 
        "word like ?",new String[] {wrd} , null, null, "id desc");

Edit:

Use single quote instead of double-quote in your WHERE clause. See here

Cursor cursor = this.db.query(TABLE_NAME, new String[] {"word"}, 
    "word like \'" + wrd + "\'", null, null, null, "id desc");
ccheneson