Intereting Posts
Android: я хочу встряхнуть его Как сделать панель навигации прозрачной Программный доступ к внутреннему хранилищу (не SD-карта) на Verizon HTC Droid Incredible (Android) Android EditText, проблема с клавиатурой textWatcher Дополнительные разрешения, чтобы приложение отображалось на всех устройствах и включало дополнительные функции на некоторых устройствах? AVD «использовать главный GPU» вызывают черный экран при тестировании приложений Как преобразовать R.color в цвет? Я не могу получать трансляцию при изменении состояния батареи? Отсутствует изображение уровня 15 api в студии android Android scipe удалить строку списка Как настроить макет Android для поддержки всех размеров экрана? Retrofit2: изменение тела запроса в OkHttp Interceptor Могу ли я использовать стиль вкладок по умолчанию в своем пользовательском представлении вкладки? Android Studio: звуковое оповещение о успехе сборки Преобразование строки в целое число на Android

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);