SQL Android Query формулировка с несколькими условиями - PullRequest
12 голосов
/ 13 июня 2011

Я пишу приложение для Android, которое пытается извлечь данные из базы данных на основе двух отдельных критериев.

Обе поля тренировки и упражнения являются строками в базе данных. Я хочу вернуть курсор только с теми строками, которые удовлетворяют ОБА критерию. Ох, и я также хотел бы, чтобы это было отсортировано в порядке дат ...

public Cursor graphQuery(String exercise, String workout) {
     Cursor cursor = mDb.query(DATABASE_TABLE, new String [] {KEY_DATE, KEY_REPS,       
         KEY_REPS_FEEL, KEY_WEIGHT, KEY_WEIGHT_FEEL}, "KEY_WORKOUT=" + workout + "AND" +  
         "KEY_EXERCISE=" + exercise, null , null, null, KEY_DATE); 

     return cursor;
}

Я новый кодер Android и буду признателен за помощь!

Ответы [ 2 ]

29 голосов
/ 13 июня 2011

Используйте selection и selectionArgs:

public Cursor graphQuery(String exercise, String workout) {
     Cursor cursor = mDb.query(DATABASE_TABLE, new String [] {KEY_DATE, KEY_REPS,       
         KEY_REPS_FEEL, KEY_WEIGHT, KEY_WEIGHT_FEEL}, "KEY_WORKOUT = ? AND KEY_EXERCISE = ?",
         new String[] { workout, exercise },
         null,
         null,
         KEY_DATE); 

     return cursor;
}

Обратите внимание, что selection String имеет ? s вместо фактических значений, а фактические значения передаются как String[] и в параметре selectionArgs.SQLite заменит эти ? s значениями из String[] selectionArgs.

1 голос
/ 13 июня 2011

Краткий ответ: Вокруг «И» -> «И» отсутствуют пробелы.:

Длинный ответ: пожалуйста, используйте маркеры параметров - вы сразу увидите пропущенные пробелы:

Cursor cursor = mDb.query(DATABASE_TABLE, new String [] { KEY_DATE, KEY_REPS,       
         KEY_REPS_FEEL, KEY_WEIGHT, KEY_WEIGHT_FEEL }, "KEY_WORKOUT=? and KEY_EXERCISE=?", new String[] { workout, exercise }, null, null, KEY_DATE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...