2012-07-03 3 views
0

Я пытаюсь получить строки из базы данных, которая имеет поле data1 euqal для значений из массива строк. это то, как я пытаюсь сделать .. но он дает sqliteexception.sql query in android

String[] Projection = { ContactsContract.Data.DATA1, ContactsContract.Data.DATA6, ContactsContract.Data.DATA8 }; 
String Selection = ContactsContract.Data.DATA1 + "= ? "; 
c = mContext.getContentResolver().query(CONTENT_URI, Projection, Selection, id, null); 

c является курсором. и id - это строковый массив, который содержит строки, которые должны совпадать с строками в поле DATA1 базы данных. есть ли другой способ сделать это? возможно, используя «IN»? исключение LogCat является:

07-03 17: 42: 49.118 391 391 E DatabaseUtils: android.database.sqlite.SQLiteException: привязка или индекс столбца вне диапазона: ручка 0x584c30

+0

Вам не нужно использовать 'IN'. Кроме того, следующий галстук, вы должны опубликовать свой logcat с информацией о 'SQLiteException'. –

+0

Опубликовать * весь * logcat. –

ответ

1

Убедитесь id содержит только одна строка.

Прежде чем пытаться извлечь значения из , вы должны позвонить c.moveToFirst(), так как он может быть пустым.

+0

, но id уже определен как массив String, содержащий 5 элементов. Я не понимаю, что означает ваше заявление. – scooby

+0

5 элементов ?? Зачем вам 5 элементов? Существует только один '?', Поэтому в массиве должен быть только один 'String', чтобы заменить'? '. –

+0

У меня уже есть String [] id с 5 элементами. Я не понимаю, как написать query.ok. Я понимаю, что мой запрос неверен. Да, я уже делаю c.moveToFirst(); – scooby