Мне интересно, как я могу вставить элемент в начале базы данных? Я хочу сделать это, потому что: a) Я хочу отобразить элементы (ListView) как "последние вставленные сверху и сначала вставленные внизу" (например, стек) б) Я хочу ограничить количество элементов в моем db. Когда новый элемент добавляется (над лимитом), я могу поместить новый (в начале) и удалить последний. (Еще не знаю, как удалить последний элемент).
Я искал решение, но я начинаю удивляться, что у меня есть контроль над тем, как этот элемент вставлен. Если бы я не думал о том, чтобы отображать базу данных с нуля до конца. Но на самом деле не знаете, как это сделать, поскольку курсор всегда устанавливается в начале db. Если бы это удалось, я могу решить b), удалив первый элемент (опять же не знаю, как это сделать).
Каждая строка каждой таблицы SQLite имеет 64-разрядный знаковый целочисленный ключ, который однозначно идентифицирует строку в своей таблице. Это целое число обычно называют "rowid"
Чтобы последний раз вставлен сверху и первым вставлен снизу....
SELECT * from mytable order by ROWID desc;
Подробнее о ROWID здесь
И, чтобы удалить самый старый:
DELETE from mytable WHERE ROWID = (SELECT MIN(ROWID) FROM mytable);
Если вы используете ROWID, вам не нужно изменять существующую таблицу. И значение ROWID гарантировано.
Если вы вставляете запись в свою базу данных, вы можете сохранить timestamp
(как новое поле). Затем вы удаляете самую старую запись, которую вы можете найти, если она превышает лимит (например, с помощью ключевого слова MAX
SQL). Вы можете отображать записи в обратном хронологическом порядке, сортируя DESC
с помощью поля timestamp
.