Порядок вставки в базу данных Android

1

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

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

Теги:
database
order
insert

2 ответа

3
Лучший ответ

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

Чтобы последний раз вставлен сверху и первым вставлен снизу....

SELECT * from mytable order by ROWID desc;

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

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

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

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

  • 0
    Спасибо за ответ. Однако я получаю синтаксическую ошибку для команды удаления, которую вы опубликовали. Я дважды проверил, и то же самое с моим (поместив имя mytabel и маркер для столбца rowid). Вы уверены, что это правильно?
  • 0
    Синтаксис для «удаления» в SQL: DELETE FROM table_name WHERE some_column = some_value. Поэтому вам нужно поставить ключевое слово FROM перед «mytable».
Показать ещё 2 комментария
1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню