2013-04-09 4 views
0

Я хотел бы запросить базу данных, чтобы получить номер звонящего.Запрос со многими selectionsargs

Вместо использования статического массива с аргументами выбора я хотел бы использовать массив, который будет создан и заполнен динамически (например, размер массива зависит) во время выполнения.

Я пытался использовать следующее заявление:

Cursor phones = _ctx.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " IN (?)", 
      actioncids, null); 

"actioncids": = String [] с арг выбора, содержит элементы из предыдущего запроса

Я всегда получаю сообщение об ошибке:

android.database.sqlite.SQLiteException: привязка или индекс столбца вне диапазона ручки 0x3c6540

Я полагаю, что я должен использовать другое выражение в Where-Clause.

Заранее спасибо

ответ

0

Вы должны поместить переменные связывания в массив строк:

Cursor phones =  
_ctx.getContentResolver().query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " IN (?)", 
    new String[] { actioncids }, null); 

Примечание: если вы хотите добавить несколько actioncids вам нужно несколько ?.

Надеюсь, это поможет ... Приветствия!

+0

Спасибо! Я создал новый метод: private String repeatChar (String c, int frequency) { Строковый результат = "?"; для (int i = 1; i <частота; i ++) { // anhängen der Buchstaben result = result + "," + c; } результат возврата; } ', и теперь он работает, ... + "IN (" + repeatChar ("?", Size) + ")" ... –

Смежные вопросы