2014-03-05 100 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。如果您想在中间重复使用任何可用的身份证号码,您必须首先找到它。

除此之外,请重新考虑您的方法。在中间缺少身份证号码应该不成问题。问题出在您显示数据的代码中,而不是数据本身。