2012-10-25 64 views
3

我的名字是邁克爾,我正在編寫一個Android應用程序,將作爲一個非常基本的課程安排應用程序。到目前爲止,我已經能夠編寫程序,以便能夠創建新的類並將其添加到數據庫中,但我似乎無法弄清楚如何從數據庫中刪除選定的條目。這節省了這些項目的按鈕定義如下:刪除Android中的SQLite數據庫中的條目

<Button 
     android:id="@+id/save" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Save" /> 

,它激活聽者:

private View.OnClickListener onSave=new View.OnClickListener() { 
     public void onClick(View v) { 
      String type=null; 

      switch (types.getCheckedRadioButtonId()) { 
       case R.id.math: 
        type="math"; 
        break; 
       case R.id.cs: 
        type="cs"; 
        break; 
       case R.id.pe: 
        type="pe"; 
        break; 
       case R.id.elective: 
        type="elective"; 
        break; 
      } 

      if (restaurantId==null) { 
       helper.insert(name.getText().toString(), 
              address.getText().toString(), type, 
              notes.getText().toString()); 
      } 
      else { 
       helper.update(restaurantId, name.getText().toString(), 
              address.getText().toString(), type, 
              notes.getText().toString()); 
      } 

      finish(); 
     } 
    }; 

凡「插入()」方法是,增加了我的輔助類功能入口。

具體的問題是我在編寫幫助器類中的'remove()'函數時遇到了麻煩。我曾嘗試使用getWritableDatabase.delete()函數,但我無法找到正確的參數。任何正確的方向對我來說都是一大幫助。先謝謝你。

如果有幫助可言,這是插入()函數:

public void insert(String name, String address, 
      String type, String notes) { 
     ContentValues cv=new ContentValues(); 

     cv.put("name", name); 
     cv.put("address", address); 
     cv.put("type", type); 
     cv.put("notes", notes); 

     getWritableDatabase().insert("restaurants", "name", cv); 
    } 

回答

3

您是否有興趣在這樣的事情?

public void deleteValue(String value) 
    { 
     SQLiteDatabase db = getWritableDatabase(); 

     String whereClause = "name"+"=?"; 
     String[]whereArgs = new String[] {String.valueOf(value)}; 
      db.delete(TABLE_NAME, whereClause, whereArgs); 
      db.close(); 
      Log.v("done","deleted row "); 
    } 

這裏的deleteValue參數值()是在此基礎上,我們願意刪除行(如刪除基於名稱行),所以我們用它作爲where子句的一個。

看到線

String whereClause = "name"+"=?"; 
      String[]whereArgs = new String[] {String.valueOf(value)}; 

這可以假定爲與where子句爲where name = value;

+0

所以,如果我理解正確的話,這將刪除基於類的名稱在數據庫中的項delete語句? – Mike

+0

否@ L337Man。假設您有興趣刪除名稱爲「xyz」的餐廳,那麼您可以將名稱「xyz」作爲參數傳遞給幫助程序類中的此函數 –

+0

感謝您的全力幫助。你不僅解決了我的問題,而且幫助我理解了解決方案。很抱歉,由於我的聲譽很低,我現在無法向您致敬,但我非常感謝您的快速準確回覆。 – Mike

相關問題