0

なんらかの理由でデータベースから削除できません。データベースの_ID値を、ユーザーがEditTextボックスに入力した値と比較しようとしています。一致する場合は、行全体を削除する必要があります。

これは私がこれまでに得たものです:

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);

Edit(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);");
    }

Edit(3):私はこれと単純なアプローチを試しましたが、それでも何もしませんでした:

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

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


    }
4

1 に答える 1

0

あなたの問題がわかりました。(edittext obj).getText()を呼び出していますが、実際には返されるテキストと編集可能なインスタンスは返されません。後に.toString()を呼び出すと、実際の値が得られます。

選択したステートメントを印刷するためにログを追加した場合、これは簡単に検出できたでしょう... fyi

于 2012-04-25T18:37:54.100 に答える