Android Contentprovider – actualización dentro de un método de inserción

¿Es correcto llamar al método de actualización SQLiteDatabase en el método insert() overridden de un proveedor de contenido?

Básicamente está bien, pero ya que no proporcionó el código, sólo puedo publicar 2 posibles formas de hacerlo

Primero:

 // In your content provider public Uri insert(...) { long insertId = db.insert(...); if(insertId == -1) { // insert failed, do update db.update(...); } } 

Segundo:

 public Uri insert(...) { long insertId = db.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_REPLACE) if(insertId == -1) { // insert and update/replace failed } } 

Consulta SQLiteDatabase como referencia en el cuarto parámetro. En la mayoría de los casos, el último método debe ser suficiente, a menos que sólo desee actualizar ciertos campos si la fila existe y tiene todos los campos si no.

La necesidad más útil para insertWithOnConflict puede ser, que podría insertar una fila y si ya existe, ignorar la inserción y en su lugar devolver la Uri / clave principal de la fila ya existente.

Es su elección lo que escribe en sus métodos anulados. Así que sí, está bien.

No sé lo que estás tratando de hacer, pero quizás quieras echar un vistazo al SQLiteDatabase replace() SQLiteDatabase . Tal vez sea mejor para sus necesidades.

  • Error de Android: close () nunca se llamó explícitamente a la base de datos
  • ¿Existen herramientas de Android que ayuden a crear proveedores de contenido?
  • Cómo seleccionar contactos exclusivos de android
  • Filtrar entradas en las funciones personalizadas de ContentProvider
  • Android 1.x Contacts.Extensions para un tipo de cuenta personalizada?
  • Android AccountManager: peekAuthToken
  • Valor inesperado de Android CallLog.Calls TIPO
  • ¿Es posible simular el cursor sqlite3 en Android cuando no existe db o tabla?
  • Objetivo de la cámara Android FileUriExposedException para SDK> = 24
  • Android - Uso del patrón Dao con contentProvider
  • Insertar una nueva foto de contacto para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.