Usar insertWithOnConflict para actualizar o insertar

Necesito insertar o actualizar y encontré el método insertWithOnConflict de SQLiteDatabase, pero no sé cómo se comprueba si la entrada ya existe.

Teóricamente necesito un argumento "Where" para verificar si existe un determinado ID, y si es así, debería reemplazar todas las demás columnas.

Esto es lo que tengo ahora, pero no creo que el segundo argumento sea el identificador único

ContentValues args = new ContentValues(); args.put(AppDatabase.COLUMN_ID, entry.getId()); args.put(AppDatabase.COLUMN_NAME, entry.getAppname()); args.put(AppDatabase.COLUMN_URL, entry.getAppUrl()); database.insertWithOnConflict(AppDatabase.TABLE_FILELIST, COLUMN_ID, args, SQLiteDatabase.CONFLICT_REPLACE); 

¿Cómo puedo manejar este comportamiento?

  1. Asegúrese de tener alguna restricción adecuada en su tabla, como PRIMARY KEY o UNIQUE .

  2. Al insertar, agregue un valor a esta columna restringida a través de ContentValues . Si insertar la nueva fila violaría alguna restricción, las filas en conflicto se eliminarán primero y, a continuación, se insertará la nueva fila.

En su caso, COLUMN_ID parece un buen candidato para la restricción PRIMARY KEY . El segundo arg nullColumnHack con valor COLUMN_ID en su código no es necesario, puede pasarlo como null .

  • Cómo probar si el cursor está vacío en una consulta SQLiteDatabase
  • IntelliJ Permiso de SQLite denegado en Android Lollipop, trabajado antes
  • ¿Cómo usar SQLiteOpenHelper con la base de datos en sd-card?
  • ¿Podemos actualizar el APK en Google Play Store sin cambiar la versión de APP
  • La base de datos SQLite ..onCreate () no se está llamando
  • Base de datos onUpgrade - oldVersion - newVersion
  • ¿El uso del texto como clave principal en la tabla SQLite es incorrecto?
  • ¿Cómo obtener el último registro de Sqlite?
  • sqlite Android - cómo obtener el valor de col / fila específica
  • SQLiteOpenHelper no puede llamar a onCreate?
  • Almacenamiento de números de coma flotante en la base de datos android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.