Я искал вокруг и не смог найти решение или рабочий пример, так что вот.
Я настроил базу данных SQLite, которая имеет пять столбцов с разными полями, которые эффективно создают список для пользователя. В списке будет несколько одинаковых значений, за исключением ROWID, для которого установлено автоматическое увеличение.
Ни пользователь, ни программа не будут знать ROWID после того, как значение будет введено в базу данных, поэтому я хочу, чтобы пользователь мог удалить одну строку, если она содержит все четыре других поля.
Мой код выглядит так:
Database
.delete(DATABASE_TABLE,
"KEY_DATE='date' AND KEY_GRADE='style2' AND KEY_STYLE='style' AND KEY_PUMPLEVEL='pumpLevel'",
null);
Но это не удаляет никаких значений. Я почти уверен, что виноват синтаксис этой команды.
Как отформатировать предложение where для команды удаления с несколькими предложениями where?
Решение снизу:
ourDatabase.delete(DATABASE_TABLE, "ROWID = (SELECT Max(ROWID) FROM "
+ DATABASE_TABLE + " WHERE " + "date=? AND grade=? AND "
+ "style=? AND pump_level=?)", new String[] { date, grade,
style, pumpLevel });