2010-08-13 2 views
0

J'essaie d'interroger un mot, pour cela j'utilise la méthode db.query. Mais je veux utiliser une clause WHERE. J'ai fait comme ceci sur mon code, mais je suppose qu'il y a quelque chose de mal là avec ma clause WHERE.Comment implémenter where clause sur la méthode de requête Android?

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; 

}

J'appelle cette méthode dans d'autres classes, l'analyse d'un argument String.

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()); 
       } 
     } 
+0

Quelle est l'erreur que vous obtenez? – Asahi

+0

"l'émulateur retourne une erreur" - vous devriez inclure le message d'erreur alors ... – poke

Répondre

2

Je crois que le problème a à voir avec les guillemets dans le code ci-dessous:

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

Essayez cette

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

Ou mieux encore

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

Modifier:

Utilisez des guillemets simples au lieu de guillemets dans votre clause WHERE. Voir here

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