2016-12-06 2 views
1

Моя таблица базы данных:LIMIT и OFFSET не работает должным образом в андроида

Column1  Column2  Column3 
First Col Second Col Third Col 
First Row First Row First Row 
Second Row Second Row Second Row 
Third Row Third Row Third Row 
Four Row Four Row Four Row 
Fifth Row Fifth Row Fifth Row 

Я пытаюсь ниже запросов:

Первый запрос:

String q = "select * from " + tableName + " LIMIT 2 OFFSET 3 "; 
sqlDB.rawQuery(q,null); 

Второй запрос:

sqlDB.query(q, null,null, null, null, null, null, "3,2"); 

Оба вопроса, дающие меня ниже результат:

First Col Second Col Third Col 
First Col Second Col Third Col 

Вместо результат ниже:

Third Row Third Row Third Row 
Four Row Four Row Four Row 

я упускаю что-то или делать неправильно? чтобы получить этот результат.

+0

'sqlDB.query (q, null, null, null, null, null, null," 2,3 ")' должен указывать 3, а не 2, записывать AFAIK. –

+0

В качестве примечания стороны: https://www.take-a-screenshot.org/ –

+0

@TimBiegeleisen да, вы правы. я изменил запрос. –

ответ

1

Запрос

SELECT * 
FROM tableName 
LIMIT 2 OFFSET 3 

средства возвращают две записи, начиная с четвертого позиции.

Ваш API вызов Android DB запрос SQLite в

sqlDB.query(q, null,null, null, null, null, null, "3,2"); 

имеет предельную строку "3,2", которая находится в формате

"offset, limit" 

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

FYI, я ничего не нашел в документации по этому вопросу, но нашел this SO question, в котором упоминается синтаксис предельной строки в Android API от SQLite.

Update:

Для того, чтобы получить последовательное поведение при использовании LIMIT и OFFSET, либо в нативном запросе или с помощью Android API, вероятно, имеет смысл также использовать ORDER BY. Использование заказа в результирующем наборе позволяет компенсировать или лимит иметь смысл в отношении ваших базовых данных. Сами таблицы базы данных моделируются после неупорядоченных множеств. Поэтому использование смещения без ORDER BY скорее всего не то, что вы хотите делать.

+0

Пожалуйста, проверьте измененный вопрос. –

+0

Я пробовал этот вопрос: Строка q = "select * from tableName ORDER BY Column2 LIMIT 2 OFFSET 3"; , но он все равно дает мне такой же результат. –

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