Primeros pasos con Sqlite en Android

El motor de bases de datos en Android es Lite. SqLite es una base de datos transaccional que ocupa una porción pequeña de datos en memoria, por esto mismo es perfecto para dispositivos mobiles.

En este articulo explicare las sentencias básicas para insertar y modificar datos así como también creación, conexión y des-conexión y veremos como podemos comprobar que todo funciona correctamente.

Al final del tutorial encontraremos el código fuente para descargar.

Creando nuesta base de datos

Lo primero que tenemos que hacer es crear una Clase que nos administre nuesta DB. Esta clase tendra tareas como crear, insertar y borrar registros etc..
El primer paso sera entonces crear una clase que herede de SQLiteOpenHelper .

Esta clase nos proveerá los métodos que luego sobrescribiremos para manejar nuestra DB:

onCreate(SQLiteDatabase db): Se invoca cuando creamos nuestra base de datos, crea las tablas y columnas, vistas y triggers.

onUpgrade(SQLiteDatabse db, int oldVersion, int newVersion): Se invoca cuando creamos una modificacion a la base de datos como alter o dropping, ademas de crear nuevas tablas.

Bien explicado esto pasamos a nuestro ejemplo.
Nosotros vamos a crear una base de datos muy sencilla llamada BDAgenda, con una sóla tabla llamada Agenda que contendrá sólo dos campos: nombre , apellido y telefono. Para ellos, vamos a crear una clase derivada de SQLiteOpenHelper que llamaremos AgendaSqlite, donde sobrescribiremos los métodos onCreate() y onUpgrade() para adaptarlos a la estructura de datos indicada.

——————————————————————————–
public class AgendaSqlite extends SQLiteOpenHelper {

//Sentencia para crear la tabla de Usuarios
String sqlCreate = "CREATE TABLE Agenda (codigo INTEGER, nombre TEXT, apellido TEXT, telefono TEXT)";
public AgendaSqlite(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);

}

@Override
public void onCreate(SQLiteDatabase db) {
//Se ejecuta la sentencia SQL de creación de la tabla
db.execSQL(sqlCreate);
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// En la practica deberemos migrar datos de la tabla antigua
// a la nueva, por lo que este método debería ser más elaborado.
//Eliminamos la versión anterior de la tabla
db.execSQL("DROP TABLE IF EXISTS Usuarios");
//y luego creamos la nueva
db.execSQL(sqlCreate);
}
}

—————————————————————————–

Dentro de nuestra clase el método onCreate() se ejecutara únicamente cuando sea necesario, en nuestro caso cuando para la creación de la base de datos, osea cuando la misma no exista. Ademas deben ejecutarse las tareas de inicializacion como la inserción de datos iniciales, si es que son necesarios.

Vemos también que nuestra clase tiene un constructor con los siguientes argumentos
context, name, factory, version.

context: El contexto de trabajo.
name: El nombre de nuestra base de datos.
CursorFactory: En este caso es null.
Version: La versión de nuestra DB. Cuando la versión es diferente el motor genera una nueva DB en blanco.

Posteriormente en nuestra Activity llamaremos a AgendaSqlite para instanciar un objeto de dicha clase.
Con nuestro objeto creado usamos el metodo getReadableDatabase() o getWritableDatabase() para obtener una referencia a la base de datos, dependiendo si sólo necesitamos consultar los datos o también necesitamos realizar modificaciones, respectivamente.

—————————————————————————–

public class SqlitedemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Abrimos la base de datos 'Agenda' en modo escritura
AgendaSqlite usdbh = new AgendaSqlite(this, "Agenda", null, 1);
SQLiteDatabase db = usdbh.getWritableDatabase();

if(db != null)
{
//Insertamos 5 usuarios de ejemplo
for(int i=1; i<6; i++) {
//Generamos los datos
int codigo = i;
String nombre = "Usuario" + i;
String apellido = "Apellido" + i;
String telefono = "0000" + i;
//Inserta los datos en la tabla Usuarios
db.execSQL("INSERT INTO Agenda (codigo, nombre,apellido,telefono) " +
"VALUES (" + codigo + ", '" +
nombre +"','" +
apellido +"','" +
telefono +"'" +
")");
}
//por ultimo cerramos la base de datos
db.close();
}
     }
}

———————————————————————

Si todo sale bien corremos nuestra aplicacion y se creara nuestra base de datos dentro de la siguiente ubicacion.

/data/data/exequielc.sqlitedemo/databases/Agenda

Para comprobar esto podemos hacer lo siguiente. Una vez ejecutada por primera vez desde Eclipse la aplicación de ejemplo sobre el emulador de Android (y por supuesto antes de cerrarlo) podemos ir a la perspectiva “DDMS” (Dalvik Debug Monitor Server) de Eclipse y en la solapa “File Explorer” podremos acceder al sistema de archivos del emulador, donde podremos buscar la ruta indicada de la base de datos. Podemos ver esto en la siguiente imagen (click para ampliar):

Para visualizar la base de datos podemos descargar el siguiente aplicativo gratuito desde la siguiente ubicacion.
http://sqliteadmin.orbmu2k.de/
Una ves descargado, la ejecutamos y procedemos a abrir nuestro archivo(“Agenda”) generado recientemente.

Bueno espero que les sea util este breve ejemplo,
lo pueden descargar desde aquí.

Saludos!!

Anuncios

Etiquetas: , , , , , ,

About exequielc

Hola! Estás en el blog de Exequiel Catalani. Como es un blog, se trata de una extensión más o menos lineal de las cosas que hago y pasan por mi cabeza: ciberculturas, videos de la red, nuevos medios y tecnologia, y Programacion etc...

6 responses to “Primeros pasos con Sqlite en Android”

  1. anice says :

    : ) gracias me ayudo mucho! un abrazo.

  2. dario says :

    se agradece, muy bueno

  3. eli says :

    Hola mi duda es que si una apliacaion adroid puede conectarse a una BD y enviar datos dedes la aplicacion y la DB los pueda recibir y como lo haria Gracias 😉

  4. Andrunk says :

    Hey buen aporte, nada mas tienes errores en el for, esta incompleto 😛

  5. dario says :

    gracias, muy bueno

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: