Мне нужно выполнить процедуру 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()
, может кто-нибудь объяснить, для чего он предназначен?