2014-03-05 58 views
-1

從sqlite數據庫刪除後有空行,並將下一行數據記錄到空行後的下一行。如何解決這個問題?在我刪除一些瘦所有工作正確之前,但刪除後,我有這個問題。從sqlite數據庫刪除後有一個空行

private static final String DB_CREATE = 
     "create table " + DB_TABLE + "(" + 
       COLUMN_ID + " integer primary key autoincrement, " + 
       COLUMN_NAME + " text, " + 
       COLUMN_TIME + " text, " + 
       COLUMN_RAW_TIME + " integer " + 
       ");"; 

用於刪除我使用:

//method which called delRec from DB class 
    public boolean onContextItemSelected(MenuItem item) { 
    if (item.getItemId() == CM_DELETE_ID) { 
     AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item 
       .getMenuInfo(); 
     db.delRec(acmi.id); 
     getSupportLoaderManager().getLoader(0).forceLoad(); 
    } 
    else if (item.getItemId() == RESET_STOPWATCH){ 
     AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item 
       .getMenuInfo(); 
     db.resetTime(Long.toString(acmi.id)); 
     getSupportLoaderManager().getLoader(0).forceLoad(); 
    } 
    return super.onContextItemSelected(item); 
} 




// delete 
public void delRec(long id) { 
    //mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null); 
    mDB.execSQL("DELETE FROM mytab WHERE _id = " + id); 

} 

用於添加:

public void addRec(String txt, String txt2, long time) { 
    ContentValues cv = new ContentValues(); 
    cv.put(COLUMN_TIME, txt2); 
    cv.put(COLUMN_NAME, txt); 
    cv.put(COLUMN_RAW_TIME, time); 
    mDB.insert(DB_TABLE, null, cv); 
+0

考慮在問題中添加一些細節,例如代碼。 – laalto

+0

準確地寫下你想要刪除的代碼和你得到的空白行。 – ved

+0

提供一些代碼 – Piyush

回答

0

autoincrement使得所生成的行ID是唯一的。相同的ID不會再次生成。

如果要生成ID爲MAX(id)+1且可能重用id,請刪除autoincrement並保留primary key。如果您想在中間重複使用任何可用的身份證號碼,您必須首先找到它。

除此之外,請重新考慮您的方法。在中間缺少身份證號碼應該不成問題。問題出在您顯示數據的代碼中,而不是數據本身。