Увеличьте значение записи в базе данных Android / SQLite - PullRequest
18 голосов
/ 07 августа 2010

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

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});

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

1 Ответ

14 голосов
/ 08 августа 2010

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...