SQLite更新查询不起作用

时间:2012-12-08 00:11:34

标签: android sqlite

我正在运行编译的更新查询。但是当我测试结果时,似乎没有任何变化。一切看起来都不错,但显然有些不对劲。任何人都可以看到我所缺少的东西。对SQLite来说很新,所以如果它很简单就道歉。谢谢!

public static Boolean updateHealth (int unitVal, int oldValue, int newValue) {
    String unit = Integer.toString(unitVal);
    String oldVal = Integer.toString(oldValue);
    String newVal = Integer.toString(newValue);

    System.err.printf("old val: %s, new val: %s\n", oldVal, newVal);
    SQLiteDatabase db = myDBOpenHelper.getWritableDatabase();
    String where = UNIT_COLUMN + " = " + unit + " AND " + HEALTH_COLUMN + " = " + oldVal;

    Cursor cursor = db.query(UNITS_TABLE, new String[] {UNIT_COLUMN}, where, null, null, null, null);

    if (cursor != null) {
        /* the record doesn't exist, cancel the operation */
        return false;
    }

    ContentValues updatedValues = new ContentValues();
    updatedValues.put(HEALTH_COLUMN, newVal);

    /* SQL query clauses */
    String whereArgs[] = null;

    db.update(UNITS_TABLE, updatedValues, where, whereArgs);

    return true;
}

1 个答案:

答案 0 :(得分:1)

如果没有检索到行,则游标不为null。因此,您必须将行if (cursor != null) {替换为if(!cursor.moveToNext()) {

顺便说一下,在更新之前,您不需要查询数据库。您可以执行更新,查看受影响的行数,如果受影响的行数> 1,则返回true。 0,否则为假。受影响的行数由方法update返回。