Как реализовать предложение where на метод Android Query? - PullRequest
0 голосов
/ 14 августа 2010

Я пытаюсь запросить слово, для этого я использую метод 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 Ответ

2 голосов
/ 14 августа 2010

Я думаю, что проблема связана с двойными кавычками в приведенном ниже коде:

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.Смотри здесь

Cursor cursor = this.db.query(TABLE_NAME, new String[] {"word"}, 
    "word like \'" + wrd + "\'", null, null, null, "id desc");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...