База данных Sqlite не удаляет запись - PullRequest
0 голосов
/ 13 февраля 2019

В моем приложении для Android я создаю таблицу Sqlite, которая содержит информацию, отсортированную по идентификатору.Поэтому я добавил метод для повторного удаления записей, передав идентификатор методу.Когда я вызываю метод из другого класса, в методе удаления получается правильный идентификатор, но по какой-то причине запись не удаляется.Возможно, метод удаления неправильный или я настроил его неверно?

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "mylist.db";
    public static final String TABLE_NAME = "mylist_data";
    public static final String COL1 = "ID";
    public static final String COL2 = "NAME";
    public static final String COL3 = "TIME";
    public static final String COL4 = "SKILL";


    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                " NAME TEXT," + " TIME TEXT," + " SKILL TEXT)";
        db.execSQL(createTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public boolean addData(String name, String time, String skill) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL2, name);
        contentValues.put(COL3, time);
        contentValues.put(COL4, skill);
        Log.d("skill", skill);

        long result = db.insert(TABLE_NAME, null, contentValues);

        //if date as inserted incorrectly it will return -1
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

    public void deleteTask(int rowId)
    {
        SQLiteDatabase db = this.getWritableDatabase();

        Log.d("delete id", String.valueOf(rowId));

        String query = "DELETE FROM " + TABLE_NAME + " WHERE "
                + COL1 + " = '" + rowId + "'";

         db.execSQL(query);
    }


    public Cursor getListContents(){
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor data = db.rawQuery("SELECT ID, NAME, TIME, SKILL FROM " + TABLE_NAME, null);
        return data;
    }
}
...