Порядок вставки в базу данных Android - PullRequest
1 голос
/ 11 января 2011

Мне интересно, как я могу вставить элемент в начале базы данных?Я хочу сделать это, потому что: а) я хочу отображать элементы (ListView) как «последний вставленный сверху и первый вставленный снизу» (как стек) б) я хочу ограничить количество элементов в моемдб.Когда новый элемент добавлен (сверх лимита), я могу поставить новый (в начале) и удалить последний.(Пока не знаю, как удалить последний элемент).

Я искал решение, но начинаю удивляться, что у меня есть какой-то контроль над тем, как вставляется элемент.Если нет, то я думал об отображении базы данных от начала до конца.Но на самом деле не знаю, как это сделать, так как курсор всегда установлен в начале БД.Если бы можно было добиться этого, я мог бы решить б), удалив первый элемент (опять же, пока не знаю, как этого добиться).

Ответы [ 2 ]

3 голосов
/ 11 января 2011

Каждая строка каждой таблицы SQLite имеет 64-битный целочисленный ключ со знаком, который однозначно идентифицирует строку в своей таблице. Это целое число обычно называют "rowid"

Чтобы получить последнюю вставленную сверху и первую вставленную внизу ....

SELECT * from mytable order by ROWID desc;

Подробнее о ROWID здесь

И, чтобы удалить самую старую:

DELETE from mytable WHERE ROWID = (SELECT MIN(ROWID) FROM mytable);

Если вы используете ROWID, вам не нужно изменять существующую таблицу. И значение ROWID гарантировано.

1 голос
/ 11 января 2011

Вы можете сохранить timestamp (как новое поле), когда вставляете запись в свою базу данных. Затем вы удаляете самую старую запись, которую можете найти, если она превышает лимит (например, с использованием MAX ключевое слово SQL). Вы можете отобразить записи в обратном хронологическом порядке, отсортировав DESC с вашим полем timestamp.

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