Anda di halaman 1dari 2

15/5/2014 Los mtodos query() y rawQuery() - Diploma de Especializacin en desarrollo de aplicaciones para Android

http://www.androidcurso.com/index.php/310 1/2
DE-Android
Diploma de Especialista
en Desarrollo de
Aplicaciones para
Android
Incribete aqu
Twitter @androidcurso
Siguenos
Recursos didcticos
Tutoriales: Java Esencial
Tutoriales: Android
Fundamentos
Tutoriales: Android
Avanzado
Videos
Preguntas de repaso y
reflexin
Referencias
Referencia Java
Referencia clase view
Anuncios broadcast
Datos de inters
Guia del Alumno
(Fundamentos)
Guia del Alumno
(Android avanzado)
Pgina oficial del
CFP/Inscripcin
Contacto
Ediciones
Opiniones de alumnos
Subvencionado para
empresas
Preguntas frecuentes
Inicio Android Fundamentos-Unidades Unidad 9. Almacenamiento de datos Los mtodos query() y rawQuery()
Los mtodos query() y rawQuery()
En el ejemplo anterior hemos utilizado el mtodo rawQuery() para hacer una consulta. Este mtodo tiene una versin
alternativa con la misma funcin el mtodo query(). El mtodo query() es el usado por defecto en la documentacin oficial
y adems es el nico disponible en otras clases, como por ejemplo para hacer una consulta en un ContentProvider. Sin
embargo, tiene un inconveniente respecto al mtodo rawQuery(), has de rellenar gran cantidad de parmetros para
controlar la bsqueda, lo que lo hace confuso de utilizar. Si ests acostumbrado a trabajar con SQL es posible que este
mtodo te resulte incmodo. A continuacin se describen los parmetros de ambos mtodos:
Cursor SQLiteDatabase.query (
String table, //tabla a consultar (FROM)
String[] columns, //columnas a devolver (SELECT)
String selection, //consulta (WHERE)
String[] selectionArgs, //reemplaza ? de la consulta
String groupBy, //agrupado por (GROUPBY)
String having, //condicin para agrupacin
String orderBy, //ordenado por
String limit) //cantidad mx. de registros
Cursor SQLiteDatabase.rawQuery(
String sql, //comando SQL
String[] selectionArgs) //reemplaza ? de la consulta
Veamos un ejemplo de cmo se podran utilizar estos mtodos. Supongamos que hemos creado la tabla, tabla, y que
tiene las columnas texto, entero y numero. Si quisiramos seleccionar las columnas texto y entero de las filas con el
valor de numero mayor que 2, ordenados segn el valor de entero y que adems el nmero de filas seleccionadas estuviera
limitado a un mximo decantidad. (donde cantidad ha de ser una variable de tipo entero previamente definida),
escribiramos:
Cursor cursor = db.rawQuery("SELECT texto, entero FROM tabla" +
" WHERE numero>2 ORDER BY entero LIMIT " + cantidad, null);
Cuando uno est acostumbrado al lenguaje SQL esta puede ser la forma ms sencilla de hacer la consulta. De forma
alternativa podemos hacer uso del segundo parmetro. Este ha de ser un array de String, de forma que estos Strings
reemplazan cada una de las apariciones del carcter ? en la cadena del primer parmetro. Veamos un ejemplo que sera
equivalente al anterior:
String[] param = new String[1];
param[0]= Integer.toString(cantidad,10);
Cursor cursor = db.rawQuery("SELECT texto, entero FROM tabla" +
" WHERE numero>2 ORDER BY entero LIMIT ?", param);
Si en lugar de mtodo rawQuery() queremos utilizar el mtodo query() usaramos el siguiente cdigo equivalente a los dos
anteriores:

String[] CAMPOS = {"texto", "entero"};
Cursor cursor = db.query("tabla", CAMPOS, "numero>2, null,
null, null, "entero", Integer.toString(cantidad));
Practica: Probando consultas en Mis Lugares
1. En el mtodo listado() de la clase Lugares reemplaza el comando SELECT * FROM lugares por
SELECT * FROM lugares WHERE valoracion>1.0 ORDER BY nombre LIMIT 3. Ejecuta la aplicacin y
verifica el nuevo listado obtenido.
2. Realiza otras consultas similares. Si tienes dudas, puedes consultar en Internet la sintaxis del
comando SQL SELECT.
3. Si quieres practicar el uso del mtodo query(), puedes tratar de realiza una consulta utilizando
este mtodo.
Ejercicio paso a paso: Utilizacin del mtodo query() para guardar puntuaciones
Este ejercicio solo se realiza si ests desarrollando la aplicacin Asteroides.
D.E. Android MOOC Introduccin Fundamentos Avanzado Glass/Wearable Libros Android
15/5/2014 Los mtodos query() y rawQuery() - Diploma de Especializacin en desarrollo de aplicaciones para Android
http://www.androidcurso.com/index.php/310 2/2
Joomla Templates by Wordpress themes free
1. En el mtodo listaPuntuaciones() de la clase AlmacenPuntuacionesSQLite remplaza la llamada
al mtodo rawQuery() por el siguiente cdigo:
String[] CAMPOS = {"puntos", "nombre"};
Cursor cursor=db.query("puntuaciones", CAMPOS, null, null,
null, null, "puntos DESC", Integer.toString(cantidad));
2. Verifica que el funcionamiento es idntico.

Copyright 2011 Los mtodos query() y rawQuery() - Diploma de Especializacin en desarrollo de aplicaciones para Android. Univ ersidad Politcnica de Valencia

Anda mungkin juga menyukai