Intereting Posts
Извлечение User-Agent программно Список <Object> или RealmList <RealmObject> на Realm Android Android-таймер? Как? Как обращаться с ListView на Android Вертикальное раздвижное меню в Android Android Прочитайте содержимое URL-адреса (содержимое отсутствует в результате) Android: выравнивание четырех квадратов Изменить цвет фона панели инструментов программно не меняет название панели инструментов Цвет фона Уведомление GCM push. Сообщено плохое уведомление – не удалось расширить RemoteViews для: StatusBarNotification Меню параметров – удаление фокуса с элемента Могу ли я настраивать глобальные пользовательские стили приложения для виджета для поддержки Android? Android single singlestance и singletask Приложение несовместимо с Nexus7, работающим с Marshmallow Ручное раздувание пользовательского представления дает разные макеты для пользовательского вида ActionBar Отправьте параметры формы с urlencoded в почтовый запрос андроид-залп

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

У меня есть база данных, содержащая userId и примечание. Пользователь не знает, есть ли в базе данных записка, чтобы написать одну и нажать кнопку «Отправить». Я хочу вставить эту заметку, если нет заметки для 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, но я думаю, что будет лучший способ. Благодарю.

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

Похоже, вы могли использовать REPLACE sqlite для решения этой проблемы, используя 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);