Ограниченные записи извлекаются в Android (база данных Sqlite) - PullRequest
5 голосов
/ 22 апреля 2010

Я пытаюсь получить смс-сообщения из входящих сообщений, отправленных сообщений и черновиков. Я хотел бы сделать нумерацию страниц для своего представления списка, так как мне необходимо извлекать записи в страницах / фрагментах.

Я не знаком с sqlite, который является базой данных, которую я понимаю, использует Android для хранения данных. Может кто-нибудь сказать мне, как я могу ограничить количество записей, которые я получаю, используя contentResolver.query?

Также, как можно вытащить файл базы данных sqlite на мою машину и просмотреть / запросить его локально для эксперимента или просмотра данных на моей машине?

Существуют ли другие лучшие способы реализации нумерации страниц в Android?

Спасибо

Ответы [ 4 ]

8 голосов
/ 22 апреля 2010

Согласно веб-сайту Sqlite , вы можете использовать в своем запросе выражение LIMIT ... OFFSET ...:

5 голосов
/ 15 марта 2011

Для любого, кто наткнулся на этот ответ и ищет способ использовать предложение LIMIT с OFFSET, я обнаружил из этой ошибки , что Android использует следующее регулярное выражение для анализа предложения limit запрос:

В фреймворке / base / core / java / android / database / sqlite / SQLiteQueryBuilder.java:

Предложение LIMIT проверяется следующим sLimitPattern.

private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");

Обратите внимание, что регулярное выражение принимает формат offsetNumber,limitNumber, даже если оно не принимает оператор OFFSET напрямую.

1 голос
/ 22 апреля 2010

Кажется, что нет никакого способа ограничить ваши результаты от SmsProvider.Однако вам это не нужно, учитывая, что вы используете CursorAdapter и не пытаетесь читать содержимое в свои собственные структуры данных.Вы пробовали это?

1 голос
/ 22 апреля 2010

Чтобы вытащить базу данных для просмотра, скопируйте ее на SD-карту и затем используйте adp pull для ее получения.

...