#android #where #android-contentprovider
#Android #where-предложение #android-contentprovider
Вопрос:
У меня есть этот выбор:
final Cursor cursorConversations = getContentResolver().query(
Uri.parse("content://gmail-ls/conversations/" Uri.encode(mailAddress)),
null, null, null, BaseColumns._ID " DESC");
ContentQueryMap mQueryMap
= new ContentQueryMap(cursorConversations, BaseColumns._ID, true, null);
С помощью ContentQueyMap я могу кэшировать данные курсора и выполнять итерации по ним также с закрытым курсором (мне это нужно для повышения производительности).
Теперь я хочу, чтобы select из Corsor извлекал только первые пятьдесят строк. Решение о повторении цикла 50 раз в mQueryMap.getRows().entrySet()
неверно: я не хочу, чтобы mQueryMap получал все строки курсора, а только первые пятьдесят.
Есть идеи? Существует ли предложение where для получения только первых n строк?
Ответ №1:
Вы могли бы сделать
final Cursor cursorConversations = getContentResolver().query(
Uri.parse("content://gmail-ls/conversations/" Uri.encode(mailAddress)),
null, null, null, BaseColumns._ID " DESC " " LIMIT 5");
«ОГРАНИЧИТЬ x» после вашей сортировки.
Приветствия
Комментарии:
1. Большое вам спасибо! @Chris, пожалуйста, как вы думаете, вы могли бы мне здесь помочь: goo.gl/MAjgTh
Ответ №2:
ВЫБЕРИТЕ * ИЗ ОГРАНИЧЕНИЯ ИМЯ_ТАБЛИЦЫ 5;
Это справедливо для sqlite. Попробуйте добавить «LIMIT 5» в ваше предложение where. (Я не пробовал)
Комментарии:
1. Не пойдет. И если я введу в «параметр предложения сортировки» ddms выдает исключение: «SortOrder ДОЛЖЕН быть пустым»… (почему??)