Batch Eliminar elementos con el proveedor de contenido en Android
Estoy tratando de batch eliminar algunos elementos en una tabla.
String ids = { "1", "2", "3" }; mContentResolver.delete(uri, MyTables._ID + "=?", ids);
Sin embargo sigo recibiendo este siguiente error
- Qué es getContentResolver (). Call () y cómo usarlo
- Detener el adaptador de sincronización para sincronizar inicialmente cuando se utiliza addPeriodicSync
- ¿Cómo funciona getContentResolver ()?
- ¿Cómo probar una actividad que utiliza un ContentProvider sin afectar la base de datos de producción?
- Uso de ContentResolver en lugar de ContentProviderClient en SyncAdapter
Java.lang.IllegalArgumentException: Demasiados argumentos de enlace. 3 argumentos fueron proporcionados, pero la declaración necesita 1 argumentos.
- Editar nombre / número de teléfono de contacto programáticamente
- ¿Cómo obtener contactos en orden de sus próximos cumpleaños?
- Eliminación de eventos específicos del calendario de Android
- ¿Cómo notificar a la actividad de llamada cuando SyncAdapter ha finalizado?
- ¿Cuáles son las ventajas de usar un ContentProvider sobre el almacenamiento SQLIte normal?
- ¿Puedo realizar esta consulta de Android con ContentResolver.query ()? (LEFT JOIN y CASE)
- ¿Cómo especifica la aplicación del proveedor de contenido los permisos que necesitan las aplicaciones de los clientes para acceder a los datos del proveedor?
- Mostrar los contactos en orden de clasificación ContactsContract.Contacts de Content Resolver
El error se produce porque tiene un marcador de posición único (?) En su cláusula where, mientras pasa tres argumentos. Deberías hacer:
String ids = { "1", "2", "3" }; mContentResolver.delete(uri, MyTables._ID + "=? OR " + MyTables._ID + "=? OR " + MyTables._ID + "=?", ids);
No sé si SQLite apoya la cláusula IN, si es así también podría hacer:
String ids = { "1, 2, 3" }; mContentResolver.delete(uri, MyTables._ID + " IN (?)", ids);
Puede utilizar ContentProviderOperation para la eliminación / inserción / actualización de lotes en una transacción. Es mucho mejor que no tenga que concatenar cadenas. También debe ser muy eficiente. Para suprimir:
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(); ContentProviderOperation operation; for (Item item : items) { operation = ContentProviderOperation .newDelete(ItemsColumns.CONTENT_URI) .withSelection(ItemsColumns.UID + " = ?", new String[]{item.getUid()}) .build(); operations.add(operation); } try { contentResolver.applyBatch(Contract.AUTHORITY, operations); } catch (RemoteException e) { } catch (OperationApplicationException e) { }
- Eclipse: La conversión al formato Dalvik falló con error 1
- El detector de estado del teléfono se llama varias veces