2011-06-20 10 views
0

私のデータベースには2つのテーブルがあり、1つにリストと1つのテーブルがあります。各製品には、それが属するリストの番号を意味する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

ログエラーcatのデータベースエラーを確認してください。 – Flo

+0

データベースのListIdのデータタイプは? –

+0

は文字列です。私は私の問題を解決する。とにかくありがとう:) – Gabrielle

答えて

0

KEY_LISTIDは、rowIdがlongの場合、Stringとして定義されます。これに変更してください

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

関連する問題