Android: есть ли лучший способ вставить и/или обновить запись в базе данных?

У меня есть база данных, содержащая userId и примечание. Пользователь не знает, есть ли в базе данных записка, чтобы написать ее и нажать кнопку "Отправить". Я хочу вставить эту заметку, если нет заметки для userId или обновить ее уже имеющуюся записку:

notesDb.open();
boolean updateResult = notesDb.updateMessage(
        userId,
        details_notes_input.getText().toString());

if(updateResult == true) {
    Log.d("databaseTester", "Updated entry into table");
} else {
    Log.d("databaseTester", "FAILED to update entry into table");
    long insertResult = notesDb.insertMessage(
            userId,
            details_notes_input.getText().toString());
    if(insertResult == -1){
        Log.d("databaseTester", "Failed to insert entry into table");
    } else {
        Log.d("databaseTester", "Inserted entry into table");
    }   
}
notesDb.close();

Итак, я довольно много пытаюсь "обновить" запись, и если я потерплю неудачу, я попытаюсь "вставить" ее. Я не очень хорошо знаю SQL, но я думаю, что будет лучший способ. Спасибо.

Ответ 1

Похоже, вы можете использовать sqlite REPLACE для решения этой проблемы, используя SQLiteDatabase.replace().

Ответ 2

Вы можете поймать исключение ограничения, запущенное в случае существования предыдущего идентификатора, а затем обновить.

try {
    db.insertOrThrow("sometable", null, cv);
} catch (SQLiteConstraintException e) {
    db.update("sometable", cv,"sometable_uid =" + id, null);
}

Ответ 3

Попробуйте это

result = db.insertWithOnConflict( "tablename", null, cv, -1);