Андроидный 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 трудным для чтения и понимания. Читатель может сделать свое собственное форматирование.