Работая над проектом и борясь с этим самым вопросом, я нашел эти другие вопросы (и ответы) полезными:
Вот что я нашел:
String[] args = new String[] {"A", "B"};
Cursor cur = db.query("tab1", null, "name in(?,?)", args, null, null, null);
Как будет:
String args = "A, B";
Cursor cur = db.query("tab1", null, "name in(" + args + ")", null, null, null, null);
Таким образом, вы можете использовать несколько ?
с инструкцией IN()
и сопоставлять их с элементом в массиве selectionArgs
(как в первом примере). Если у вас несколько условий в предложении WHERE
, убедитесь, что они соответствуют ?
с правильным элементом в selectionArgs
:
String[] args = new String[] {"Current", "A", "B"};
Cursor cur = db.query("tab1", null, "IsCurrent=? AND name in(?,?)", args, null, null, null);
Или вы можете просто использовать строку, состоящую из запятой -пределенные аргументы непосредственно в инструкции IN()
в самой строке selection
(например, во втором примере).
Указанные ссылки, казалось, указывают на то, что вы можете использовать один ?
в IN()
] и каким-то образом расширить связанный параметр (ы), но я не смог заставить это работать.