Подтвердить что ты не робот

Увеличьте значение записи в базе данных android/sqlite

Я пытаюсь увеличить значение целочисленного ключа в строке в моей таблице. Однако ничего действительно не происходит.

db.rawQuery("UPDATE table SET key = key + 1 WHERE name=?", new String[] {name});

Однако этот код работает нормально (просто устанавливает ключ в твердое кодированное значение):

    ContentValues values = new ContentValues();
    values.put("key", 2);
    db.update("table", values, "name=?", new String[] {name});

Также попробовал '?' вместо просто?, но это привело к ошибке во время выполнения.

4b9b3361

Ответ 1

Из http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html:

public Cursor rawQuery (String sql, String [] selectionArgs)

Запускает предоставленный SQL и возвращает курсор по набору результатов. Возвращает объект курсора, который помещается перед первой записью

по сравнению с:

public void execSQL (String sql, Object [] bindArgs)

Выполнить один оператор SQL, который не является запросом. Например, CREATE TABLE, DELETE, INSERT и т.д.

Другими словами, SQL-запросы, которые возвращают таблицу, должны запускаться с rawQuery, а те, которые не возвращают таблицы, должны запускаться с execSQL.