Android SQLite递增整数字段从查询中读取

时间:2015-02-12 21:10:08

标签: android sqlite

预先披露,这是一个学校项目。

我在一个类中有一个方法来管理一个" quzzer"我的应用程序中的功能,它旨在增加(或减少一个案例)SQLite数据库中的三个整数字段。它需要独立于" quizzing functions"这样做,所以我需要先提取数据,更改数据,然后将其更新到数据库中。

数据库中的字段如下: " prof_level" - 只有可接受的值为1到4(含)。 " times_correct" - 只有正数。 " times_incorrect" - 只有正数。

我可以从数据库中提取数字然后将它们递增1,但是当我更新时,它们会将数据库中的值递增2,而我不知道为什么。以下是该方法的完整代码:

    public void updateCharacterProf(String table, String charToUpdate, boolean isIncreased){
    //get character from table
    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    qb.setTables(table);
    String[] projection = {"prof_level", "times_correct", "times_incorrect"};
    Cursor c = qb.query(db, projection, "character=='" + charToUpdate + "'", null, null, null,
                            null, null);

    c.moveToFirst();

    //check to see if the prof level is at max/min
    int profLevel = c.getInt(0);
    int correctTimes = c.getInt(1);
    int incorrectTimes = c.getInt(2);

    //mod prof levels
    if (isIncreased){
        profLevel++;
        correctTimes++;
    }
    else{
        profLevel--;
        incorrectTimes++;
    }

    if (profLevel == 4 && isIncreased){
        profLevel = 4;
    }
    else if (profLevel == 1 && !isIncreased){
        profLevel = 1;
    }

    c.close();

    ContentValues values = new ContentValues();
    values.put("prof_level", profLevel);
    values.put("times_correct", correctTimes);
    values.put("times_incorrect", incorrectTimes);

    //update db
    db.update(table, values, "character=='" + charToUpdate + "'", null);

    db.close();
}

我希望这只是我不知道如何更新SQLite dbs的事情,但我在" var ++ == + = 2&#上迷路了34;我现在得到的东西。

1 个答案:

答案 0 :(得分:0)

我发现这个问题是我自己创建的问题,我在调用它的对话框片段中发出了两次意外调用此数据库更新的回调(一次在onClick方法中,一次在生命周期中onDismiss覆盖。)。

修复此错误,这是在另一个不同的dateabase相关事件中发生的,为我解决了问题。