SQLite:按'insertOrderinDB'排序

时间:2011-09-29 07:46:15

标签: android sqlite

我需要知道如何使用DB中的插入顺序进行选择而不使用我自己的任何索引字段。可能是这个可能吗?

并且,事务中的插入顺序是线性模式? (首先插入句子 - >第一次插入)

数据库创建

private static final String CREATE_TABLE_SONGS = "CREATE TABLE IF NOT EXISTS SONGS (" +
        "LIST_ID int NOT NULL, " +
        "PLAY_ID int NOT NULL, " + //ID of the song in the list
        "SONG_ID int NOT NULL, " + //ID of the song
        "TITLE varchar(200) NOT NULL," +
        "TIME int NOT NULL, " +
        "PROVIDER int NOT NULL, " +
        "PROVIDER_ID varchar(200) NOT NULL, " +
        "SONG_STATE int NOT NULL, " +
        "PRIMARY KEY (LIST_ID,PLAY_ID));";

然后

db.execSQL(CREATE_TABLE_SONGS);

3 个答案:

答案 0 :(得分:1)

order by _id
鉴于id的自动增量性质,

应该这样做。

答案 1 :(得分:1)

SQLite表有一个名为ROWID的“秘密”列,其值随着您添加行而增加。它可以作为“订单输入表”的代理。 ROWID基本上是表的“自由”自动递增整数主键列。

请注意,根据定义,SQL数据库没有行排序的概念。虽然我会感到惊讶的是ROWID的每一个行为都在SQLite中发生了变化(因为它的存在和行为是documented),如果你想在SQL数据库中以有序的方式检索行,你会感到惊讶。自己负责存储订购信息。

答案 2 :(得分:0)

按照插入行的时间顺序对行进行排序的最佳实践方法是使用时间戳列,当插入行时,该列被指定为与“now”对应的日期时间的默认值。这在SQLite中很容易做到。

sqlite database default time value 'now'