String[] args = new String[]{A,B} // if A, B are variables
String[] args = new String[]{"A","B"}
Cursor cur = db.query("tab1", null, "name in (?,?)", args, null, null, null);
Работая над проектом и борясь с этим самым вопросом, я нашел эти другие вопросы (и ответы) полезными:
Вот что я нашел:
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()
] и каким-то образом расширить связанный параметр (ы), но я не смог заставить это работать.
Если я не ошибаюсь, аргумент parsing не работает с предложением IN. Таким образом, вы не можете использовать '?' в вашем предложении WHERE.
Вы должны сделать что-то вроде этого:
String args = "A, B";
Cursor cur = db.query("tab1", null, "name in (" + args + ")", null, null, null, null);
и построить ваши аргументы с петлей, если необходимо.