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

Используйте 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; } 

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

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

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

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