Нубский вопрос по query о помогите!!!

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
Andrés
Сообщения: 11
Зарегистрирован: 17 мар 2015, 11:28

Нубский вопрос по query о помогите!!!

Сообщение Andrés » 25 ноя 2015, 00:03

Help me, please!
Целый день ищу - не могу найти: как сделать правильный запрос (query для получения курсора)
что-бы выбрались строки в которых заданный столбец содержит одно из значений из списка?

Код: Выделить всё

        // задаем название колонки и указываем что требуемые значения в массиве
        String where = COL_SUPERCOL + " = ?";
        // массив для выбираемых значений
        String[] whereArr;
        int s = megaMap.size();
        int i = 0;
        whereArr = new String[s];
        for (Map.Entry<String, DataContainer> entry : megaMap.entrySet()) {
            whereArr[i] =  entry.getKey();
            i++;
        }

        getContentResolver().query(CONTENT_URI, null, where, whereArr, null);
В ответ прилетает только такое: android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException: bind or column index out of range: handle 0x95f96f8

Понимаю что в самом запросе чего-то не хватает, но чего именно - найти не могу.
Пробовал и количество "вопросов" ставить соответственно количеству строк в массиве и запятые перед ними ставить - такое не проходит вообще. Сколько ни искал - не могу найти пример как сделать в данном случае правильно.
Везде где находил использование массива - задают одну строку, а что-бы несколько - такого нет.
Возможно это невозможно? :)

На всякий случай поясню: к примеру есть колонка с номером телефона, в курсор нужно поместить те строки
в которых есть номер телефона из списка.
Таблица:
COL_NAME COL_NUM
Лена 333555
Света 777111
Катя 933555
Вася 02020202

Код: Выделить всё

where = COL_NUM + " = ?";
whereArr = { "333555", "777111" };
context.getContentResolver().query(PHONES_URI, null, where. whereArr, null);
Соответственно в курсоре ожидаю получить первые две строки...

Аватара пользователя
Andrés
Сообщения: 11
Зарегистрирован: 17 мар 2015, 11:28

Re: Нубский вопрос по query о помогите!!!

Сообщение Andrés » 25 ноя 2015, 00:41

Сам спросил - сам отвечу (вдруг еще кто искать будет):
на каждый доп. аргумент в массиве нужно в строке запроса добавить:where += " OR " + COL_NUM + " = ?"

Но вообще имхо это как-то не красиво. Возможно есть более элегантное решение?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Нубский вопрос по query о помогите!!!

Сообщение doter.ua » 25 ноя 2015, 01:30

IN или join
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить