2017-04-07 59 views
0

我正在嘗試在Android SQLite中查詢我的表。當我查詢我的表時,我希望ID號從1開始,併爲每行增加。但是,當我在我的桌子上查詢時,它顯示了原始表格的ID號碼。 任何建議將不勝感激。如何在Android SQL查詢中將ID編號設置爲1

 private static String[] FROM = {_ID, TITLE, DATE, TIME, DETAILS}; 
private static String ORDER_BY = TIME + " ASC"; 

private Cursor getAppointments() { 
    SQLiteDatabase db = appointments.getReadableDatabase(); 
    Cursor cursor = db.query(TABLE_NAME, FROM, DATE + "=?", new String[] {date}, null, null, ORDER_BY, null); 
    startManagingCursor(cursor); 
    return cursor; 
} 

} 
+0

問題是關於sqlite那麼爲什麼你要標記「mysql」? – denny

+0

我不好意思:) –

回答

0

通常情況下,你應該不是真的關心ID,比它的獨特其他的價值,從而確定該行。

如果你定義一個列的表_idPRIMARY KEY那麼除非你設置_id,它通常會從1開始,當你插入的第一行,接下來通常是2,然後3等

如果你的代碼AUTOINCREMENT雖然,這可能並非如此,因爲AUTOINCREMENT將使獨特價值在數據庫級別。

下面是關於從SQLite Autoincrement

AUTOINCREMENT關鍵字強加額外的CPU,內存,磁盤空間萃取物以及 磁盤I/O開銷,應該如果不嚴格需要避免。通常不需要 。

In SQLite, a column with type INTEGER PRIMARY KEY is an alias for the ROWID (except in WITHOUT ROWID tables) which is always a 64-bit 

有符號的整數。

On an INSERT, if the ROWID or INTEGER PRIMARY KEY column is not explicitly given a value, then it will be filled automatically with an 

未使用的整數,通常是一個比 使用目前最大的ROWID更多。無論是否使用AUTOINCREMENT 關鍵字,情況都是如此。

If the AUTOINCREMENT keyword appears after INTEGER PRIMARY KEY, that changes the automatic ROWID assignment algorithm to prevent the 

在數據庫的整個生命週期中重複使用ROWID。換句話說,AUTOINCREMENT的目的是防止從以前刪除的行重新使用 中的ROWID。

我假設你沒有這樣的_id會動態變化,要查詢後所提取的行的順序,這是一個問題是如何被解釋爲每一個期望

當我查詢我的表我想要的ID號爲1個 增量開始的每一行

如果這是你的問題,那麼你通常不會通過遊標做到這一點,而你循環,它將根據查詢進行排序。如果你真的希望第一個被1,2,3所引用,那麼你可以循環使用這個數字創建一個關聯的數組。

+0

我得到你來自哪裏,因爲把id作爲主鍵,並且它自動增加對我的程序非常重要。不過謝謝你的幫助,我會嘗試通過遊標數組的想法做循環。謝謝。 –

+0

不幸的是我似乎無法獲得遊標數組的工作。不過謝謝你的幫忙。 –