我想知道如何在数据库的开头插入一个元素?我想这样做是因为: a)我想将元素(ListView)显示为“最后插入顶部并首先插入底部”(如堆栈) b)我想限制数据库中的元素数量。当添加一个新元素(超过限制)时,我可以添加新元素(在开头)并删除最后一个元素。 (还不知道如何删除最后一个元素。)
我正在寻找解决方案,但我开始怀疑我对如何插入元素有任何控制权。如果不是,我正在考虑从头到尾显示数据库。但实际上并不知道如何操作,因为光标始终设置在db的开头。如果可以实现这一点,我可以解决b)删除第一个元素(再次不知道如何实现这一点)。
答案 0 :(得分:3)
每个SQLite表的每一行都有一个64位有符号整数键,用于唯一标识其表中的行。这个整数通常称为“rowid”
最后插入顶部并首先插入底部....
SELECT * from mytable order by ROWID desc;
详细了解ROWID here
并删除最早的:
DELETE from mytable WHERE ROWID = (SELECT MIN(ROWID) FROM mytable);
如果使用ROWID,则无需修改现有表。而且,ROWID的价值是有保证的。
答案 1 :(得分:1)
将记录插入数据库时,可以存储timestamp
(作为新字段)。然后,如果超过限制,则删除可以找到的最旧记录(例如,使用MAX
SQL关键字)。您可以使用DESC
字段对timestamp
进行排序,以反向时间顺序显示记录。