0

我有一个Service可以清理一些文件并执行一些 SQL 查询的工具。这个特定的 SQL 查询应该删除早于 x 天的条目。我这样做的方法是:

public boolean deleteOldCases(int days) {

        String deleteQuery = "DELETE FROM " + TABLE_CASES + " WHERE " + DATE +  " <= date('now','-" + days + " day')";
        Log.d("Delete Query: ", deleteQuery);
        SQLiteDatabase db = this.getWritableDatabase(); 
        db.rawQuery(deleteQuery, null);
        db.close();

        return true;
    }

当向我的数据库添加条目时,我会这样做:

public void addCase(Case c) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ID, c.getCaseNumber());
        values.put(STATUS, "");

        // Inserting Row
        db.insert(TABLE_CASES, null, values);

        db.execSQL("Update " + TABLE_CASES + " Set " + DATE + "=datetime() where " + KEY_ID + "= '" + c.getCaseNumber() + "';" );

        db.close(); // Closing database connection

    }

这个方法是从我的服务中调用的,我可以通过记录来验证这个方法是否被调用。所有这些数据都在 ListView 中显示给用户,这显然是有效的。但是根本没有删除旧条目..

我怀疑这是因为我用 保存了案例date = datetime()并试图用<=date('now', '-1 day')

有人可以看到做错了什么吗?

4

1 回答 1

0

仅用于rawQuery()实际查询(以“SELECT”关键字开头的 SQL 语句)。改为使用execSql()

于 2013-07-04T11:13:36.937 回答