SQLite在某些ID之前插入?

时间:2014-06-09 20:09:15

标签: java android sqlite twitter4j

我有一个充满推文的数据库。当用户点击刷新时,我想要获取比ID更新的推文(我知道该怎么做)。在我抓住推文之后,我想在ID 0之前插入它们,因此ID为0的推文不再是第一条推文,而是用新推文替换。

我搜索过,我不知道该怎么做。

以下是我用于在首次启动时添加用户时间轴的代码:

public void addTimemline(Timeline timeline){
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 

    values.put(COL_TEXT, timeline.getText());
    values.put(COL_TWEET_ID, timeline.getTweetId());
    values.put(COL_SCREEN_NAME, timeline.getTwitterScreenName());
    values.put(COL_REAL_NAME, timeline.getRealName());
    values.put(COL_FAVORITE_COUNT, timeline.getFavoriteCount());
    values.put(COL_RETWEET_COUNT, timeline.getRetweetedCount());
    values.put(COL_HASHTAG_ENTITIES, timeline.getHashtagEntities()); 
    values.put(COL_USER_MENTION_ENTITIES, timeline.getUserMentionEntities()); 
    values.put(COL_URL_ENTITIES, timeline.getUrlEntities()); 
    values.put(COL_MEDIA_ENTITIES, timeline.getMediaEntities());

    db.insertOrThrow(TABLE_TWEETS, null, values);
    db.close();
}

创建声明:

private static final String TABLE_TWEETS_CREATE = "create table "+TABLE_TWEETS+" ("
                + Tweets.COL_ROW_ID + " integer primary key autoincrement not null, "
                + Tweets.COL_TEXT + " text not null, "
                + Tweets.COL_TWEET_ID + " text,"
                + Tweets.COL_SCREEN_NAME + " text,"
                + Tweets.COL_REAL_NAME + " text,"
                + Tweets.COL_FAVORITE_COUNT + " text,"
                + Tweets.COL_RETWEET_COUNT + " text,"
                + Tweets.COL_HASHTAG_ENTITIES + " text,"
                + Tweets.COL_USER_MENTION_ENTITIES + " text,"
                + Tweets.COL_URL_ENTITIES + " text," 
                + Tweets.COL_MEDIA_ENTITIES + " text);";

1 个答案:

答案 0 :(得分:3)

正如你设置的那样,你不能这样做。您告诉数据库自动增加密钥,因此它将为您提供尚未使用的下一个可用插槽。这意味着如果您有四条记录并删除最后一条记录,则下次插入记录时仍会获得第五个记录。它不允许您自己设置ID或在插入最后一个之前插入记录。

您可以更改为手动管理ID,但更多的工作和容易出错,我会强烈建议您不要这样做。

您应该真正调查SQLite的ORDER BY关键字。这会将光标排序为您在查询中定义的顺序,而不是依赖于记录的id顺序。如果在数据结构中放入某种时间戳,则可以在拉动光标时按相反的顺序排序。

您可以找到SQLite ORDER BY关键字here的完整文档。

你还没有说过你是使用原始SQL还是任何android SQLite函数,所以你可能还想看一下android sqlite插入函数here