Android数据库游标返回错误的结果

时间:2013-03-19 02:09:56

标签: android database sqlite cursor alarmmanager

我正在使用闹钟应用程序,我正在尝试创建一个删除所有已设置警报的方法,并删除数据库中的所有记录。

使用此方法,当我设置闹钟时,我会检索待处理意图的RequestCode:

public static void CursorRQ() {
    Cursor cursor;
    Integer cursorRQ;
    cursor = DatabaseManager.getAllData();
    cursor.moveToFirst();
    if (!cursor.isAfterLast()) {
        do {
            cursorRQ = cursor.getInt(0);
            if (cursorRQ >= RQ) {
                RQ = RQ + 1;
            }
        }
        while (cursor.moveToNext());
    }
    cursor.close();
}

现在,取消并且一切正常,直到我删除数据库表:

public static void deleteAll() {        
    db.delete(TABLE_NAME, null, null);
}   

当我开始设置新警报时。他们设置了正确的请求代码(从1开始),然后为每个新警报设置+1,但是当我尝试再次取消所有警报时,则使用此方法:

Cursor cursor = DatabaseManager.getAllData();
cursor.moveToFirst();
int IDRQ = cursor.getInt(0);                
while(cursor.moveToNext()) {
    IDRQ = cursor.getInt(0);                
}

使用起始数字填充光标,就像我从未删除数据库中的值一样。

例如我设置3个警报并且他们得到请求代码1,2,3。我删除它们并且它们被完全删除和取消,然后我设置新的警报并且它们再次设置为1,2,3但是当我取消它们,该方法取消了请求号为4,5,6的待处理意图,就像我从未删除过记录一样。

0 个答案:

没有答案