Подтвердить что ты не робот

SQL-запрос Query Query с несколькими условиями

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

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

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 и буду благодарен за помощь!

4b9b3361

Ответ 1

Используйте 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 имеет ? место фактических значений, а фактические значения передаются как String[] и в параметре selectionArgs. SQLite заменит те ? значениями из String[] selectionArgs.

Ответ 2

Краткий ответ: пробелы отсутствуют в "И" → "И".:

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

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);