[HowTo] Crear base de datos en Android

Aplicaciones sencillas para principiantes que empiezan con Android

[HowTo] Crear base de datos en Android

Notapor JuDeZ » 08 Mar 2009, 18:10

Complejidad: 1.0
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:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje. Debe registrarse.
JuDeZ
 
Mensajes: 34
Registrado: 23 Feb 2009, 22:27

Re: [HowTo] Crear base de datos en Android

Notapor Martavillari » 08 Mar 2009, 19:17

Me ha ayudado mucho, muchas gracias!;)
Martavillari
 
Mensajes: 1
Registrado: 08 Mar 2009, 19:13

Re: [HowTo] Crear base de datos en Android

Notapor supremonan1 » 03 May 2009, 02:46

gracias
supremonan1
 
Mensajes: 2
Registrado: 01 May 2009, 06:37

Re: [HowTo] Crear base de datos en Android

Notapor DEVELasquez » 03 Jun 2009, 04:09

seria bueno que pudieras mostrarnos como podemos guardar el contenido de cuadros de textos y otros controles en la base

Gracias por tus aportes
DEVELasquez
 
Mensajes: 2
Registrado: 19 Mar 2009, 23:17

Re: [HowTo] Crear base de datos en Android

Notapor Oscar [L] » 26 Sep 2009, 09:31

Como podrias hacer para que los elementos de la lista se comporten como botones... que nos lleven a.... otras listas o a imagenes por ejemplo...
Si sabes hacer eso te admirare un poco mas :D

Gracias por adelantado
Oscar [L]
 
Mensajes: 1
Registrado: 25 Sep 2009, 22:12

Re: [HowTo] Crear base de datos en Android

Notapor JuanFigueroaBailon » 13 Dic 2009, 00:00

Excelente post! estuve 2 dias tratando de conectarme a la bd :evil: , hasta que me tope con eso!! :mrgreen:

muchas gracias
Saludos :ugeek:
JuanFigueroaBailon
 
Mensajes: 1
Registrado: 11 Dic 2009, 21:52

Re: [HowTo] Crear base de datos en Android

Notapor Leyla » 24 Mar 2010, 11:32

Hola!

Este tutorial me ha ido muy bien para empezar con las bases de datos Android, lo único es que intento modificarlo un poco para hacer que añada usuarios cuando yo pulse un botón y entonces no me funciona, ya que no me muestra por pantalla el array.

mi codigo es el siguiente:

package com.BD1;

import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;

public class BD1 extends Activity {

ArrayList<String> salida = new ArrayList<String>();
SQLiteDatabase myDB = null;
private final String BD_NOMBRE = "BD1";
private final String BD_TABLA = "Usuarios";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// _____________________________BOTON________________________________

Button bGuardar = (Button) findViewById(R.id.e_guardar);
bGuardar.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
guardarUsuario();
}
});

// __________________________________________________________________
}

public void guardarUsuario() {

//EditText etnom = (EditText) findViewById(R.id.e_nom);

// ____________________________________________________________________
this.deleteDatabase(BD_NOMBRE); //Reiniciamos la base de datos al principio.

myDB = this.openOrCreateDatabase(BD_NOMBRE, 1, null);

myDB.execSQL("CREATE TABLE IF NOT EXISTS " + BD_TABLA
+ "(nombre VARCHAR);");

myDB.execSQL("INSERT INTO " + BD_TABLA + " (nombre)"
+ " VALUES ('Laura');");
myDB.execSQL("INSERT INTO " + BD_TABLA + " (nombre)"
+ " VALUES ('Laura2');");

String[] columna = { "nombre" };
Cursor c = myDB
.query(BD_TABLA, columna, null, null, null, null, null, "10");
if (c != null) {
int columnaNombreIndice = c.getColumnIndexOrThrow("nombre");
while (c.moveToNext()) {
String valorColumnaNombre = c.getString(columnaNombreIndice);
salida.add(valorColumnaNombre);
}
}
if (myDB != null)
myDB.close();
ListAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, salida);
setContentView(android.R.layout.simple_list_item_1);
this.setListAdapter(adapter);



// ____________________________________________________________________
}

private void setListAdapter(ListAdapter adapter) {
// TODO Auto-generated method stub

}
}
Leyla
 
Mensajes: 3
Registrado: 23 Mar 2010, 13:24

Re: [HowTo] Crear base de datos en Android

Notapor Leyla » 09 Abr 2010, 09:39

He seguido investigando, y he llegado a la conclusion de que el problema es que al usar:

myDB.execSQL("INSERT INTO " + BD_TABLA + " (nombre)" + " VALUES ('leyla');");

Funciona.


Pero si no le pones 'lo que sea' y pones una variable:

myDB.execSQL("INSERT INTO " + BD_TABLA + " (nombre)" + " VALUES (variable);");

Deja de funcionar,

y yo lo que quiero es que guarde lo que contiene la variable y no tener que poner yo el nombre en el código, sino pedirlo mediante textbox y botón.

No se como solucionarlo.

Gracias por leerme.
Leyla
 
Mensajes: 3
Registrado: 23 Mar 2010, 13:24

Re: [HowTo] Crear base de datos en Android

Notapor Leyla » 09 Abr 2010, 11:09

Solucionado:

myDB.execSQL("INSERT INTO " + BD_TABLA + " (nombre)"
+ " VALUES ('" + nom + "');");
Leyla
 
Mensajes: 3
Registrado: 23 Mar 2010, 13:24

Re: [HowTo] Crear base de datos en Android

Notapor joshka » 13 Abr 2010, 13:05

buenas! no me va el tutorial, ni siquiera me hace los insert, voy haber si puedo trastear para ver que es.

leyla tu lo has conseguido?

un saludo
joshka
 
Mensajes: 1
Registrado: 13 Abr 2010, 13:02


Volver a Tutoriales básicos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron