Андроидный sqlite-запрос с несколькими
Вот мой текущий код sqlite:
Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME +
" where " + KEY_ownerID + " = ? ", new String[] { ownerID});
Он отлично работает, но когда я попытался добавить несколько, где-то вроде этого:
Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME +
" where " + KEY_ownerID + " = ?, " + KEY_partnerID + " = ?, " + KEY_advertiserID + " = ?, " + KEY_chefID + " = ?", new String[] { ownerID, partnerID, advertiserID, chefID });
Он возвращает ошибку. Итак, как мне работать с несколькими?
Ответы
Ответ 1
изменить запрос на:
Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " +
TABLE_RECIPE_NAME + " where " + KEY_ownerID + " = ? AND " + KEY_partnerID +
" = ? AND " + KEY_advertiserID + " = ? AND " + KEY_chefID + " = ?",
new String[] { ownerID, partnerID, advertiserID, chefID });
Ответ 2
Возможно, вам нужно использовать AND
. Вам нужен запрос, который должен возвращать значение в курсоре, заполненном сопоставлением нескольких значений. Таким образом, вам просто нужно использовать AND
. Вместо использования comma(,)
. Выше ответ кажется правильным, но ему просто не хватает объяснений.
Ответ 3
Вы делаете правильный, но просто нужно использовать И или ИЛИ ключевое слово между каждым, где условие соответствует вашему требованию. Поэтому попробуйте использовать это один раз.
Ответ 4
Используйте AND
и OR
для нескольких предложений WHERE
. Используйте круглые скобки, если требуется логическая группировка или заказ.
SELECT *
FROM employees
WHERE (last_name = 'Smith' AND first_name = 'Jane') OR (employee_id = 1);
(источник)
Примечание
- В этом дополнительном ответе отсутствует форматирование кода Android, поскольку он делает SQL трудным для чтения и понимания. Читатель может сделать свое собственное форматирование.