如何删除android sqlite中的特定行

时间:2017-04-29 04:49:57

标签: java android sqlite

我有一张桌子address (id,name,phone,address)。 我在列表视图中公开了详细信息(name,phone,address)

我为列表中的每一行添加onCLick函数以删除它。当我们没有使用primary_key时,如何仅删除该行。即我们只有(name,phone,address)。可能存在重复的行,因此不希望删除多行。

如果我给delete from address where name ='name_val' and phone = 'phone_val' and address='address_val',它将删除所有与我不打算做的条件匹配的行。

数据库代码。

public List<String> getAllRecords(){

    String query = "Select  * FROM "+ TABLE_ACT;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c = db.rawQuery(query,null);

    List activities = new ArrayList<String>();
    if(c.moveToFirst()){
        do{
            String actData= c.getString(1)+"\n"+c.getString(2)+"\n"+c.getString(3);
            //getString(1) is name, getString(2) is phone, getString(3) is address
            activities.add(actData);
        }while(c.moveToNext());
    }

    c.close();
    db.close();

    return activities;
}

上面的方法返回一个Strings列表。这个在活动中使用,如下所示。

lists = dbHandler.getAllRecords();
ListAdapter adapter = new ArrayAdapter<String(this,android.R.layout.simple_list_item_1,lists);

并且它具有继承自ListActivity的onItemClickListener。

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Log.e("Hello", "You clicked Item: " + id + " at position:" + position);


    }

请帮我删除一个特定的行,因为ListItem中只包含姓名,电话和地址。

2 个答案:

答案 0 :(得分:1)

public void deleteItem(String get_ID)
{
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DELETE FROM Table_Name WHERE TABLE_ID='"+get_ID+"'");
}

OnClick 方法

viewOBJ.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

          myDbOBJ = new Your_Data_Base_Class(getContext());
                  myDbOBJ.deleteItem("1"); // set Dynamic
                  notifyDataSetChanged();
        }
      });

注意

get_ID 将是字符串整数。要获得最佳方法, TABLE_ID 应为主键

答案 1 :(得分:0)

只需使用所选行中的ID:

delete from address
where id = id_val

如果你正在使用CursorAdapter,那么你可以拨打getItemId()

long id = getItemId(position);
String where = "id=?";
String whereArgs = { Long.toString(id) };
db.delete(tableName, where, whereArgs);

这可以直接在您的OnClickListener或数据库帮助程序中。请注意,我假设您已经有一个打开的SQLiteDatabase对象。如果没有,你将不得不打开一个。