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