Objetivo: Crear una base de datos, crear una tabla, introducir un par de elementos y mostrarlos por pantalla a modo de lista.
Versión del Eclipse utilizada: 3.4.1 (Ganymedes)
Os adjunto el código que de una actividad con la que podemos jugar un poco con bases de datos en Android.
Lo he comentado lo mejor posible para que se fácil de entender.
- Código: Seleccionar todo
package net.androoid.tutorial.basesdatosSimple;
import java.util.ArrayList;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
/* La actividad ListActivity se utiliza para mostrar por pantalla
* una lista de elementos. Esta actividad alberga por defecto
* un widget ListView al que se le asocia una fuente de datos como
* por ejemplo una array o un Cursor.
* Además, la ListActivity trae también un layout por defecto que
* consiste en una lista a pantalla completa.
*/
public class BasesDatosSimple extends ListActivity {
private final String BD_NOMBRE = "baseDatosSimple";
private final String BD_TABLA = "usuarios";
/** Se llama a este método cuando accedemos a la Actividad por primera vez. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> salida = new ArrayList<String>();
SQLiteDatabase myDB = null;
/* Abrimos la base de datos.
* Si no existía previamente se creará automáticamente. */
myDB = this.openOrCreateDatabase(BD_NOMBRE, 1, null);
/* Creamos la tabla de usuarios en la base de datos.
* En caso de que existiera previamente no da error ('IF NOT EXISTS'). */
myDB.execSQL("CREATE TABLE IF NOT EXISTS "
+ BD_TABLA + " (nombre VARCHAR, apellido VARCHAR,"
+ " pais VARCHAR, edad INT(3));");
/* Introducimos un par de usuarios de ejemplo en la base de datos. */
myDB.execSQL("INSERT INTO "
+ BD_TABLA + " (nombre, apellido, pais, edad)"
+ " VALUES ('Ingrid', 'Gonzalez', 'Spain', 20);");
myDB.execSQL("INSERT INTO "
+ BD_TABLA + " (nombre, apellido, pais, edad)"
+ " VALUES ('Carlos', 'Garcia', 'Peru', 30);");
/* Ahora hacemos una select sobre las columnas 'nombre' y 'edad'
* para todos los usuarios mayores de 18 años.
* Sólo mostraremos los primeros 7 usuarios. */
String[] columns = {"nombre","edad"};
Cursor c = myDB.query(BD_TABLA, columns, "edad > 18", null, null, null, null, "7");
/* Nos aseguramos de que se haya creado el cursor. */
if (c != null) {
/* Obtenemos el índice de las columnas que vamos a utilizar. */
int columnaNombreIndice = c.getColumnIndexOrThrow("nombre");
int columnaEdadIndice = c.getColumnIndexOrThrow("edad");
/* Creamos un entero a modo de contador
* para listar los nombres por pantalla. */
int i = 1;
/* El cursor devuelto está posicionado antes de la primera entrada.
* Avanzamos una posición. */
while (c.moveToNext()){
/* Obtenemos el valor de la columna nombre */
String valorColumnaNombre = c.getString(columnaNombreIndice);
/* Obtenemos el valor de la columna edad */
int valorColumnaEdad = c.getInt(columnaEdadIndice);
/* El nombre de una columna también
* se puede recuperar mediante su índice.
* En este caso no es muy útil por que ya
* sabemos el nombre de la columna pero
* os lo muestro a modo de ejemplo. */
String nombreColumnaEdad = c.getColumnName(columnaEdadIndice);
/* Añadimos la entrada a la lista que mostraremos por pantalla. */
salida.add("" + i + ": " + valorColumnaNombre
+ " (" + nombreColumnaEdad + ": " + valorColumnaEdad + ")");
i++;
}
}
/* Cerramos la conexión a la base de datos */
if (myDB != null)
myDB.close();
/* Las clases que implementan la interfaz ListAdapter se encargan de asociar
* los datos que queremos mostrar por pantalla (nuestra arrayList 'salida')
* con el objeto ListView que alberga por defecto la actividad ListActivity.
* En este caso utilizaremos un layout lineal vertical predefinido por Android.
*/
ListAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, salida);
/* Asociamos el adaptador que acabamos de crear a esta actividad */
this.setListAdapter(adapter);
}
}
Cada vez que ejecuteis esta aplicación se volverán a realizar los INSERTS, por lo que la base de datos irá creciendo siempre con los mismos elementos.
Adjunto el proyecto:
