从数据库中删除具有特定ID的所有项目

时间:2011-06-20 13:57:44

标签: android database

在我的数据库中,我有2个表,一个包含列表,另一个包含产品。每个产品的id都表示它所属的列表的编号。我想创建一个菜单来删除列表中的所有产品。我写过这个方法,但它不起作用。任何的想法?

public boolean deleteproductall(long rowId) {
        return mDb.delete(DATABASE_TABLE_2, KEY_LISTID + "=" + rowId, null) > 0;
    }

表2:

private static final String DATABASE_TABLE_2 = "Products";

public static final String KEY_ROWID2 = "_id";
public static final String KEY_LISTID = "ListId";
public static final String KEY_ITEM = "Item";
public static final String KEY_QUANTITY = "Quantity";
public static final String KEY_UNITS = "Units"

并且仅用于查看列表中的产品,我使用了:

public Cursor fetchListId(String listId) throws SQLException {
        Cursor mCursor = mDb.query(true, DATABASE_TABLE_2, new String[] {
                KEY_ROWID2, KEY_LISTID, KEY_ITEM, KEY_QUANTITY, KEY_UNITS },
                KEY_LISTID + "=" + listId, null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

2 个答案:

答案 0 :(得分:2)

请试试这个。它解决了你的问题。

public void deleteProductAll(long rowId)
{
    try
    {
        mDb.execSQL("DELETE FROM Products WHERE ListId = " + rowId);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

KEY_LISTID定义为String,其中rowId为long。将其更改为此

return mDb.delete(DATABASE_TABLE_2, KEY_LISTID + "=" + Long.valueOf(rowId), null) > 0;