2015-03-25 22 views
0

從存儲在SQLite中的數據中獲得序列號之間的差距我正在開發一個android應用程序作爲我的最終學校項目,並且我遇到了一個問題。如何使用android

我創建SQLite中的表,存儲從用戶喜歡的ID,姓名,電話,郵箱地址等信息,但我想在一個有序的方式來使用順序排序總是插入用戶插入的數據。在我的Add_new_user_activity中,我有一個EditText字段,我想用表中現有ID的下一個可用ID動態自動設置,但我不知道如何處理可能會產生的差距,如果用戶被刪除兩個順序的IDS。

讓說,我有表這種順序記錄:與它的相應的ID

用戶從1到50。

然後我刪除了27和29用戶。

下一次我想添加一個新用戶時,我希望EditText知道ID 26和28之間存在差距,並將新用戶ID取爲27,如果我添加新用戶,也會這樣做。在這種情況下,如果我加2個更多的新用戶各自的ID必須是29和51

有沒有有效地解決它的方法嗎?

預先感謝您!

+0

你爲什麼想要這樣的行爲?沒有很好的理由,你不應該做那些複雜的事情...... – thriqon 2015-03-25 08:11:21

回答

0

你想要做什麼聽起來很危險,因爲這不是預期的使用AUTO_INCREMENT的。

如果你真的想找到最低的未使用的鍵值,不使用AUTO_INCREMENT可言,而手動管理你的鑰匙。但是,這不是推薦的做法。

退一步並問:「你爲什麼需要回收鍵值?」無符號INT(或BIGINT)不能提供足夠大的密鑰空間嗎?

0

您需要添加更多的領域在你的DB「已刪除」,每當你刪除一個用戶只需將它設置爲1。現在,只要你必須先添加一個新用戶,你需要有獲得用戶ID列表1在「已刪除」字段中按升序排列。列表的第一個值將保存所需的ID。然後您可以更新具有該ID的值。如果您沒有這樣的字段,請使用遞增的ID進行插入。