Curso Android
El constructor de la clase:
SQLiteOpenHelper(Context contexto, String nombre, SQLiteDatabase.CursorFactory cursor, int version).
Los parámetros se describen a continuación:
contexto: Contexto usado para abrir o crear la base de datos.
nombre: Nombre de la base de datos que se creará.
cursor: Se utiliza para crear un objeto de tipo cursor.
version: Número de versión de la base de datos empezando desde 1. En el caso de que la base de datos actual tenga una versión más antigua se llamará a onUpgrade() para que actualice la base de datos.
El método onCreate(): se invocará cuando sea necesario crear la base de datos. Como parámetro se nos pasa una instancia de la base de datos que se acaba de crear. Este es el momento de crear las tablas que contendrán información.
El método onUpgrade(): si más adelante decidimos crear una nueva estructura para la base de datos, tendremos que indicar un número de versión superior, por ejemplo la 2. Cuando se ejecute el código sobre un sistema donde se disponga de una base de datos con la versión 1, se invocará el método onUpgrade(). En él tendremos que escribir los comandos necesarios para transformar la antigua base de datos en la nueva, tratando de conservar la información de la versión anterior.
Cursor SQLiteDatabase.query (
Stringtable, //tabla a consultar (FROM)
String[] columns, //columnas a devolver (SELECT)
Stringselection, //consulta (WHERE)
String[] selectionArgs,//reemplaza “?” de la consulta
StringgroupBy, //agrupado por (GROUPBY)
Stringhaving, //condición para agrupación
StringorderBy, //ordenado por
Stringlimit) //cantidad máx. de registros
Cursor SQLiteDatabase.rawQuery(
Stringsql, //comando SQL
String[] selectionArgs)//reemplaza “?”de la consulta
Supongamos que hemos creado la tabla, tabla, y que tiene las columnas texto, entero y numero.
Si quisiéramos seleccionar:
Ejemplos
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 más sencilla de hacer la consulta. De forma alternativa podemos hacer uso del segundo parámetro. Este ha de ser un array de String, de forma que estos Strings reemplazan cada una de las apariciones del carácter “?” en la cadena del primer parámetro. Veamos un ejemplo que sería 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 método rawQuery() queremos utilizar el método query() usaríamos el siguiente código equivalente a los dos anteriores:
String[] CAMPOS = {"texto", "entero"};
Cursor cursor = db.query("tabla", CAMPOS, "numero>2”, null,
null, null, "entero", Integer.toString(cantidad));Un adaptador (Adapter) es un mecanismo de Android que hace de puente entre nuestros datos y las vistas contenidas en un ListView (o un GridView o Spinner). Dado que es muy frecuente usar bases de datos e nuestras aplicaciones, existen adaptadores específicos para este caso. La forma de trabajar habitual es hacer una consulta en una base de datos (comando SQL SELECT) y obtener un objeto Cursor con el resultado. Este objeto será pasado al adaptador para que lo recorra y cree tantas vistas como registros se hayan encontrado.
La forma más sencilla de pasar los datos del Cursor obtenido en una consulta a un ListView es utilizar la clase SimpleCursorAdapter
adaptador = new SimpleCursorAdapter(this,
R.layout.elemento_lista,
Lugares.listado(),
new String[] { "nombre", "direccion"},
new int[] { R.id.nombre, R.id.direccion},
0);
Este tipo de adaptador tiene una restricción, los id de los elementos a reemplazar solo pueden ser del tipo TextView o ImageView. Por lo que cosas más complejas como modificar el valor de un RatingBar no son posibles.
Cuando queramos definir un Adaptador sin ningún tipo de restricciones aprendimos a extender la clase BaseAdapter. A continuación aprenderemos a usar otra clase sin restricciones, pero que nos facilita mucho del trabajo a realizar cuando los datos a mostrar vienen de un objeto Cursor. Se trata de la clase CursorAdapter.