Ответ 1
Похоже, вы можете использовать sqlite REPLACE для решения этой проблемы, используя SQLiteDatabase.replace()
.
У меня есть база данных, содержащая 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, но я думаю, что будет лучший способ. Спасибо.
Похоже, вы можете использовать sqlite REPLACE для решения этой проблемы, используя SQLiteDatabase.replace()
.
Вы можете поймать исключение ограничения, запущенное в случае существования предыдущего идентификатора, а затем обновить.
try {
db.insertOrThrow("sometable", null, cv);
} catch (SQLiteConstraintException e) {
db.update("sometable", cv,"sometable_uid =" + id, null);
}
Попробуйте это
result = db.insertWithOnConflict( "tablename", null, cv, -1);