2014-06-24 66 views
1

我想按位置刪除行。我寫了這個,但它不起作用。現在它正在按id刪除一行,而不是按位置刪除。我不知道如何編寫該查詢。如何從位置數據庫中刪除一行

例如,這是我的表:

position | name 
1  | aaaa 
2  | bbbb 
3  | cccc 
4  | dddd 

現在我刪除的行號3。我想這樣的一個表:

position | name 
1  | aaaa 
2  | bbbb  
3  | dddd  

這是刪除方法主要從活動類:

public void onClickBtnDelete(View view) { 

SparseBooleanArray checkedItemPositions = getListView() 
     .getCheckedItemPositions(); 
int itemCount = getListView().getCount(); 
int[] tab = new int[itemCount]; 

for (int i = itemCount - 1; i >= 0; i--){ 
    tab[i] = itemCount - i;    
    if (checkedItemPositions.get(i)) { 
     adapter.remove(list.get(i)); 
     db.deleteMyPlace(new MyPlacesTable(tab[i])); 
    } 

} 

這是我的刪除方法從數據庫處理器:

public void deleteMyPlace(MyPlacesTable myPlace) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(TABLE_MY_PLACES, KEY_ID + " = ?", 
       new String[] { String.valueOf(myPlace.getID()) }); 
     db.close(); 
} 

而且構造,getter和setter:

public MyPlacesTable(int id){ 
     this._id = id; 
} 

public int getID(){ 
     return this._id; 
} 

public void setID(int id){ 
    this._id = id; 
} 

你能幫助我嗎?

+2

什麼是不工作的意思?你在哪裏運行for循環? – Blackbelt

+0

我認爲首先在位置獲取列表項數據並獲取唯一值,然後嘗試從給定的唯一值中刪除數據庫中的相關數據。 –

+0

看看編輯過的帖子。 – rewarien

回答

0

試試這段代碼從db中刪除行。

private SQLiteDatabase db;  
db = DBHelper.getWritableDatabase(); 
db.delete("TABLE_NAME", "_id="+deleteId, null); 

將刪除的ID替換爲相應的「i」值。

+0

它仍然不起作用 – rewarien

+0

你在哪裏使用這段代碼? – prakash

0

試試這個

public static void DeleteData(SQLiteDatabase db, String TableName,String userfield,String userid) 
     { 
      String table_name = TableName; 
      String where =userfield + "='" +userid+"'"; 
      String whereArgs[] = null; 
      db.delete(table_name, where, whereArgs); 

    } 
0

我知道這將刪除基於列的信息,也許這將有助於務實地尋找解決辦法。

/* Delete rows */ 
delete from /*table*/ where /*column*/ between 51 and 129