2014-06-09 36 views
0

我有一個充滿推文的數據庫。當用戶點擊刷新時,我想獲取比ID(我知道該怎麼做)更新的推文。在獲取推文之後,我想在ID 0之前插入它們,因此帶有ID 0的推文不再是第一條推文,而是替換爲較新的推文。在某些ID之前插入SQLite?

我已經搜索,我不知道如何做到這一點。

這裏是我使用的添加上最早推出的用戶的時間軸中的代碼:

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);"; 

回答

3

如您有它設置,你不能這樣做。您正在告訴數據庫自動增加密鑰,因此它會爲您提供下一個尚未使用的可用插槽。這意味着如果您有四條記錄並刪除最後一條記錄,則下次插入記錄時仍會獲得第五條記錄。它不允許你自己設置ID,或者在插入最後一個之前插入一條記錄。

您可以更改爲手動管理ID,但這樣做更容易發生錯誤,我會盡力避免這樣做。

你應該仔細研究SQLite的ORDER BY關鍵字。這將按照您在查詢中定義的順序對光標進行排序,而不是依賴記錄的id順序。如果您在數據結構中添加某種時間戳,那麼當您拉動光標時,您可以按照相反的順序進行排序。

您可以找到SQLite ORDER BY關鍵字here的完整文檔。

你還沒有說如果你使用原始的SQL或任何的android SQLite函數,所以你可能還想看看android sqlite的插入函數here