如何按位置从数据库中删除行

时间:2014-06-24 09:55:08

标签: java android sql database delete-row

我想按位置删除行。我写了这个,但它不起作用。现在它按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]));
    }

}

这是我从DatabaseHandler中删除的方法:

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

你能帮助我吗?

3 个答案:

答案 0 :(得分:0)

尝试使用此代码删除db中的行。

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

将已删除的ID替换为相应的" i"值。

答案 1 :(得分: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);

     }

答案 2 :(得分:0)

我知道这将删除列中的信息,这可能有助于务实地找到解决方案。

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