Android: SQLite Невозможно связать аргумент с индексом, поскольку индекс выходит за пределы диапазона - PullRequest
0 голосов
/ 23 февраля 2019

Я использую базу данных SQLite для хранения предметов.Когда я вызываю элементы по их идентификаторам, используя предложение where и аргументы выбора.Если я передаю массив аргументов выбора с более чем одним идентификатором элемента, он вылетает с ошибкой:

Невозможно связать аргумент с индексом 2, поскольку индекс выходит за пределы диапазона.Оператор имеет 1 параметр.

Вот как я выполняю запрос:

    override fun onCreateLoader(id: Int, args: Bundle?): Loader<Cursor> { 
    loaderId = id 
    val selectionArgs = arrayOf("2", "1")
    return CursorLoader(activity!!,
            MenuContract.ItemEntry.CONTENT_URI,
            Constants.ITEM_PROJECTION_COLUMNS,           
            MenuContract.ItemEntry._ID + "=?",  
            selectionArgs,
            null
    ) 
}

Это прекрасно работает, если массив selectionArgs содержит только один идентификатор.Не уверен почему.

1 Ответ

0 голосов
/ 23 февраля 2019

Количество аргументов выбора должно соответствовать количеству ? (заполнителей).Таким образом, ошибка в основном говорит , куда мне поместить второй аргумент, поскольку я уже заменил первый ? (заполнитель)

Это работает, когда естьтолько 1 элемент массива, поскольку существует только 1 ? (заполнитель).

Возможно, вы захотите: -

MenuContract.ItemEntry._ID + "=? OR " + MenuContract.ItemEntry._ID + "=?",

Тогда оба аргумента имеют заполнитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...