如何在Android Query方法上实现where子句?

时间:2010-08-13 20:51:43

标签: android database sqlite select

我正在尝试查询一个单词,因为我正在使用db.query方法。但我想使用 WHERE 子句。我在我的代码上做了这样的事情,但我想我的 WHERE 子句有问题。

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;

}

我在其他类中调用此方法,解析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());
                }
        }  

1 个答案:

答案 0 :(得分:2)

我认为问题与下面代码中的双引号有关:

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

试试这个

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

甚至更好

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

修改

在WHERE子句中使用单引号而不是双引号。见here

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