Programación Android: Usando la cláusula Where

05/04/2019Artículo original

Los proveedores de conteido ofrecen dos formas de pasar una cláusula where:

  • A través de la URI
  • Combinando una cadena y un conjunto de argumentos string-array reemplazables.

En esta entrada vamos a ver ambas.

Imaginemos que queremos recuperar un lugar (De la aplicación FavSites) cuyo id sea 23. Usaríamos el siguiente código:

Activityactivity;//... Inicializamos la actividad...StringsiteUri="content://com.elbauldelprogramador.provider.FavSites/sites/23";CursormanagedCursor=activity.managedQuery(siteUri,projection,//Columnas a devolvernull,//Cláusula WHEREnull);//CláusulaORDERBY

En este ejemplo se ha dejado el argumento que hace referencia a la cláusula where a null ya que hemos especificado el ID del registro que queremos en la URI. En este caso el ID está embebido en la URI. Se usa la URI como vehículo para pasar la cláusula where. Esto se hace evidente cuando nos fijamos cómo se implementa el proveedor para los Sites de la aplicación, que corresponde al método query. A continuación un fragmento de código del método query:

//Devuelve un id de sitio//content://.../sites/23intsiteId=uri.getPathSegments().get(1);queryBuilder.setTables(favSitesTableMetaData.TABLE_NAME);queryBuilder.appendWhere(favSitesTableMEtaData._ID+"="+siteId);

Como vemos la id del sitio se extrae de la URI. La Uri se divide en segmentos (path) del a forma content://. . . /seg1/seg2/seg3, en nuestro ejemplo el primer segmento es el id 23.

  FRIKADAS: Versiones Open Source de cientos de juegos clásicos

Cláusulas where explícitas

Vamos a ver una vez más la estructura del método managedQuery de la clase Activity:

publicfinalCursormanagedQuery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)

El parámetro selection, es el que actúa como cláusula Where (Representa un filtro en el que elegimos qué filas queremos que se nos devuelvan). Si en este argumento pasamos null se nos devolverán todas las filas para la URI dada. En este parámetro podemos incluir ?, que serán reemplazados por los valores del parámetro selectionArgs en el orden que vayan apareciendo.

  Conectividad, automatización flexible y datos, los 3 impulsores de la industria 4.0

Los siguientes códigos que se muestran son equivalentes:

//Método UrimanagedQuery("content://com.elbauldelprogramador.provider.FavSites/sites/23",null,null,null,null);//Método explícitomanagedQuery("content://com.elbauldelprogramador.provider.FavSites/sites",null,"_ID=?",newString[]{23},null);

Te preguntarás qué método usar en según que situación. Por convención se suele usar el método mediate URI cuando sea posible aplicarlo, y el explícito en casos especiales (Como en el ejemplo de arriba.)

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad