2012-10-25 98 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

相关问题