Вот relevant documentation. В принципе, String[] selectionArgs
- это массив, поэтому у вас может быть один или несколько аргументов для вашего предложения sql WHERE. Поскольку эти параметры используются в методе database.query()
, они фактически создают строчную строку запроса sql, которая будет запускаться SQLite. В параметре String selection
необходимо указать все имена столбцов ИНЕК, как это:
String selection = "DefaultId =? OR Name=?";
Для каждого ?
в selection
, соответствующее WHERE значения подставляются из вашего selectionArgs
массива. Таким образом, вы должны иметь что-то вроде этого:
String[] selectionArgs = new String[]{"567", "Bob"};
В database.query()
метод Перебирает selectionArgs
для каждого ?
он находит в selection
. Таким образом, размер массива должен соответствовать числу ?
заполнителей, которые вы используете в selection
. (Если есть более ?
чем selectionArgs
значения, то я считаю, null
получает подставив вместо. Я не проверял это, хотя.)
Так в основном, так как это возможно, чтобы иметь несколько WHERE значения подставляются в selection
, поэтому selectionArgs
является массив вместо простой строки.
потому что при определении метода вы можете передавать аргументы в виде строкового или строкового массива, когда аргументы выбора имеют несколько значений, тогда обработка строки может быть затруднена, но строковый массив может содержать одиночные значения, если есть только на selectargs и несколько значений, если есть more –
Тогда мы не могли использовать одно значение String без массива? –
его просто выбор дизайна –