Android SQLite - что на самом деле делает SQLiteDatabase.replace ()?

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

32
задан Jake Wilson 2 November 2011 в 16:57
поделиться