2011-06-20 35 views
0

在我的数据库中,我有两个表格,一个带有列表,另一个带有产品。每个产品都有一个id,表示它所属列表的编号。我想创建一个菜单来删除列表中的所有产品。我写了这个方法,但它不起作用。任何想法?从数据库中删除所有具有特定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; 
    } 
+0

检查日志猫数据库错误 – Flo

+0

是什么ListId的数据库中的数据类型? –

+0

是字符串。我解决了我的问题。无论如何感谢:) – Gabrielle

回答

0

KEY_LISTID被定义为字符串,其中作为ROWID是长。将其更改为这个

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

谢谢..我认为我的功能也可以工作,但我忘了在那之后再调用filldata()... – Gabrielle

2

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

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

这个功能也可以...谢谢:) – Gabrielle

相关问题