2012-04-25 151 views
0

由于某种原因,我无法从我的数据库中删除。我试图比较数据库中的_ID值与用户在EditText框中输入的值,如果匹配,应删除整行。从sqlite数据库中删除 - Android

这是我到目前为止有:

private static String[] DELETION = {_ID, TITLE, TIME, DETAILS}; 
private Cursor delete(){ 
     calendarData = new CalendarData(this); 
     SQLiteDatabase db = calendarData.getWritableDatabase(); 

     Cursor idToDelete = db.query(true, TABLE_NAME, DELETION, _ID+" = "+deleteAnAppointment.getText(), 
       null, null, null, null, null); 
     startManagingCursor(idToDelete); 
     return idToDelete; 
    } 

    private void selectToDelete(Cursor cursor){ 
     calendarData = new CalendarData(this); 
     SQLiteDatabase db = calendarData.getWritableDatabase(); 
     if(cursor.moveToNext()){ 
      db.delete(TABLE_NAME, _ID+" = "+deleteAnAppointment.getText(), null); 
     } 

    } 

请任何帮助,将不胜感激,我的EditText输入类型设置为编号

编辑:只是为了让可能多一点清晰的,我打电话一个onClick这些方法对于这样的按钮:

Cursor toDelete = delete(); 
      selectToDelete(toDelete); 

编辑(2):表创建

@Override 
    public void onCreate(SQLiteDatabase db){ 
     db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
        DATE + " LONG, " + 
        TITLE + " TEXT NOT NULL, " + TIME + " TEXT NOT NULL," + DETAILS + " TEXT NOT NULL);"); 
    } 

编辑(3):我想这个问题,以及一个简单的方法,但仍然没有:

private void deleteAppointment(){ 
     calendarData = new CalendarData(this); 
     SQLiteDatabase db = calendarData.getWritableDatabase(); 

     db.delete(TABLE_NAME, _ID+" = "+deleteAnAppointment.getText(), null); 


    } 
+0

你会得到错误吗? – zapl 2012-04-25 18:05:37

+0

不,没有错误,当我输入与数据库中的ID号相匹配的数字时,数据库中没有任何事发生 – a7omiton 2012-04-25 18:08:21

+0

发布您的表创建语句。 – JoxTraex 2012-04-25 18:11:30

回答

0

我看到您的问题。您正在调用(edittext obj).getText(),它实际上并不返回它返回的文本和可编辑的实例。之后调用.toString(),然后您将获得实际值。

如果您添加日志以打印您的选择语句,这将很容易检测到... fyi

+0

我曾将它作为.toString()之前,但正在尝试一些新的东西,但这不是问题(或者至少只有问题)。但是,感谢您的帮助 – a7omiton 2012-04-25 19:19:47