Обновление «на месте» в базе данных Android SQLite, не работающей с rawQuery - PullRequest
1 голос
/ 26 ноября 2011

Мне нужно выполнить обновление SQL-запроса «на месте» для базы данных SQLite в моем приложении для Android.Запрос имеет вид:

обновить таблицу T set column = column + 1, где someOtherColumn = aValue

Я попытался выполнить этот запрос с помощью SQLiteDatabase.rawQuery(updateQuery, "someOtherColumn = ?", new String{}[aValue]), но я нахожучто столбец не увеличивается.Когда я выполняю тот же запрос с обычным SQLiteDatabase.update(...), он работает нормально, но для этого требуется, чтобы я извлек старое значение столбца, обновил его снаружи и затем выполнил update(), который, вероятно, менее эффективен, поскольку требует выбора, а затем обновления.,

Есть ли способ, как я могу обновить "на месте", используя первый запрос?

Спасибо.

1 Ответ

2 голосов
/ 26 ноября 2011

Можно ли каким-либо образом обновить "на месте", используя первый запрос?

Это не запрос.Это UPDATE заявление.Он не возвращает набор результатов.Используйте его с execSQL(), а не rawQuery().

, но для этого нужно, чтобы я извлек старое значение столбца, обновил его снаружи и затем выполнил update (), который, вероятно, менее эффективен, поскольку для него требуетсявыберите и затем обновите

Так работают все базы данных SQL.Теперь те, кто предлагает хранимые процедуры, могут позволить вам сделать UPDATE и SELECT в одном запросе, но это все еще , UPDATE и SELECT.Кроме того, SQLite не поддерживает хранимые процедуры, по крайней мере, когда я последний раз смотрел.

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