SQLite en Android: insertWithOnConflict () devuelve resultados cada vez mayores para los mismos conjuntos de datos

PROBLEMA ANTECEDENTES: Tengo dos tablas donde la clave principal son campos de texto.

Cuando utilizo repetidamente SQLiteDatabase.insertWithOnConflict(myTable, null, myValues, SQLiteDatabase.CONFLICT_REPLACE) con los mismos datos, veo valores cada vez mayores que se devuelven.

Por lo tanto, parece que INSERT se está realizando (en lugar de REPLACE) para los mismos conjuntos de datos.

PROBLEMA: Sin embargo, al mirar estas tablas con "SQLite Database Browser" veo el número correcto de registros que esperaría cuando REPLACE se realice.

La raíz de mi confusión es la descripción de la documentación de Android que indica: * Devuelve el ID de fila de la fila recién insertada O la clave primaria de la fila existente si el parámetro de entrada "conflictAlgorithm '= CONFLICT_IGNORE O -1 si hay algún error *

PREGUNTA: ¿Por qué se realiza un REEMPLAZO, pero no se devuelve el ID de fila de los datos existentes?

¿Me parece que está haciendo exactamente lo que le estás pidiendo? Usted está pidiendo que reemplace y hace exactamente eso. Eliminará la fila antigua e insertará la nueva.

Dejaría la fila antigua y devolvería esa ID si en su lugar pasó CONFLICT_IGNORE .

 try{ insertWithOnConflict(openHelper_ob.TABLE_NAME,null,contentValues, SQLiteDatabase.CONFLICT_ABORT); } catch(SQLException ex) { Toast.makeText(getApplicationContext(),"name found before plz, change it", Toast.LENGTH_SHORT).show(); } 
  • Android - Base de datos con ContentValue con error booleano?
  • ¿Cuántas filas puedo insertar en una tabla en SQLite Android?
  • ¿Cómo almacenar los datos de edittext a Android base de datos sqlite?
  • SQLite: Búsqueda eficiente de subcadenas en una tabla grande
  • Android: actualizar la versión de la base de datos y agregar nueva tabla
  • ¿Los campos de datos SQLite null ocupan más memoria?
  • ¿Soporta la plataforma Android SpatiaLite?
  • Aplicación detenida en Android / SQLITE ERROR /
  • Intenta reabrir un objeto ya cerrado: sqlitequery
  • Java - java.lang.IllegalStateException: No se pudo leer la fila 0, col -1 de CursorWindow
  • Cómo eliminar todos los elementos de SQLite en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.