Android - SQLite数据库不断显示应该删除的行

时间:2015-02-23 08:36:17

标签: android sqlite

我目前正在创建一个从服务器下载列表并将这些列表放入SQLite数据库的应用程序。在Mainactivity中,它调用db中的列表并将它们放入自定义适配器中,一切正常,等等。

在此之后,我通过几个屏幕来处理listdata,在最后的活动中,它使用一个查询来删除它从db中处理的行。我使用logcat在此之后打印数据库,它显示该行已被删除。

接下来它将我带回Mainactivity并在其onResume中再次从db加载列表,但发现应该删除的行仍在其中。列表视图正在正确更新,这确实是从数据库中检索本应删除的数据的问题。

那么,任何人都知道为什么我会在另一个活动中获取已被删除的行?

Mainactivity:

private List<String> list = new ArrayList<>();

public void onResume() {
    super.onResume();
    context = getApplicationContext();

    ConsLoadListDataSource cllDataSource = new ConsLoadListDataSource(context);
    cllDataSource.open();
    list = cllDataSource.sqliteToListIds();
    cllDataSource.close();

    logcat("Jadajada: " + list.toString());

}

SQLiteHelper:

public List<String> sqliteToListIds() {
    List<String> conList= new ArrayList<>();

    if (!db.isOpen()) {
        open();
    }
    Cursor cursor = db.query(ConsLoadListSQLHelper.TABLE_CONS_HEADER,
            allConsListColumns, null, null, "loadlist" , null, "loadlist");
    cursor.moveToFirst();

    while (!cursor.isAfterLast()) {
        conList.add(cursor.getString(1));
        cursor.moveToNext();
    }
    db.close();

    return conList;
}

删除方法有效,但由于要求:

public void deleteList(int id) {
    if (!db.isOpen()) {
        open();
    }

    db.delete(ConsLoadListSQLHelper.TABLE_CONS_HEADER,
            ConsLoadListSQLHelper.CONS_HEADER_ID + " = " + id,  null);

    db.close();
}

修改

通过删除服务器上的行并在返回MainActivity之前再次从服务器检索所有数据,我找到了一种解决方法,但我仍然不知道如何解决原始问题问题,这使我的应用程序更依赖于互联网连接,所以它不完美,但现在必须做。

1 个答案:

答案 0 :(得分:0)

要删除单个项目,您必须使用

public void deleteRule(String value) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(Table_Name, Key_value + " = ?",
                new String[] { value });
        db.close();

    }

希望它有所帮助。