Мне нужно выполнить процедуру типа INSERT или UPDATE IF EXIST с моей базой данных. Я читал, что .replace ()
было правильным решением. Он отлично вставляет новые записи, но если запись уже существует, кажется, что она не обновляется.
У меня есть что-то вроде этого:
ContentValues values = new ContentValues();
values.put(ID, 1);
values.put(NAME, "bob");
values.put(VISIBLE, true);
db.replace("peopleTable", null, values);
Если я запускаю этот код, когда этой записи нет в базе данных, создается впечатление, что запись создается нормально, как если бы я выполнил insert ()
. Но если я изменю NAME на «john» или что-то в этом роде и снова запустил replace ()
, запись не будет обновляться.
Согласно документации, вот синтаксис:
public long replace (String table, String nullColumnHack, ContentValues initialValues)
Почему он называется initalValues
? Означает ли это, что эти значения используются только тогда, когда запись не существует и будет вставлена? Если да, то как использовать этот метод для обновления записи? Где вы указываете новые значения?
Если я не понимаю, что вообще делает replace ()
, может ли кто-нибудь объяснить, какова его цель?