Использование оператора LIMIT в запросе SQLite - PullRequest
57 голосов
/ 23 марта 2010

У меня есть запрос, который выбирает строки в ListView без ограничения. Но теперь, когда я реализовал SharedPreferences, чтобы пользователь мог выбирать, сколько строк будет отображаться в ListView, мой запрос SQLite не работает. Я передаю аргумент таким образом:

return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, "LIMIT='" + limite + "'");

Ответы [ 3 ]

110 голосов
/ 23 марта 2010

Оператор равно (=) не используется с предложением LIMIT. Удалить его.

Вот пример LIMIT запрос:

SELECT column FROM table ORDER BY somethingelse LIMIT 5, 10

Или:

SELECT column FROM table ORDER BY somethingelse LIMIT 10

В вашем случае правильное утверждение будет:

return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, String.valueOf(limite));

Посмотрите здесь на синтаксис выбора SQLite: http://www.sqlite.org/syntaxdiagrams.html#select-stmt

Это изображение весьма полезно: http://www.sqlite.org/images/syntax/select-stmt.gif

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

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

С <framework/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 напрямую.

0 голосов
/ 22 января 2015

Из-за этой ошибки, которая также не учитывает отрицательные пределы

8, -1

Мне пришлось использовать этот обходной путь

SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(table);
String query = builder.buildQuery(projection, selection, null, null, null, sortOrder, null);
query+=" LIMIT 8,-1";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...