从sqlite DB删除后有一个空白行

时间:2014-03-05 14:08:54

标签: java android sqlite

从sqlite DB中删除后有空白行,并将下一行数据记录到空行后的下一行。如何解决这个问题?在我删除一些瘦之前所有工作正常,但删除后我有这个问题。

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

1 个答案:

答案 0 :(得分:0)

autoincrement使生成的行ID唯一。不会再生成相同的ID。

如果您希望以MAX(id)+1生成ID且可能重用ID,请移除autoincrement并保留primary key。如果您想在中间重复使用任何可用的ID号,您必须先找到它。

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