Conceptualismo
Enviado por DarkMarksDoe • 17 de Marzo de 2015 • 5.079 Palabras (21 Páginas) • 224 Visitas
PRÁCTICA 1: USO DE SQLITE EN ANDROID
Objetivo
Desarrollar un conjunto de aplicaciones que permitan describir el funcionamiento del
almacenamiento de información en SQLite haciendo uso de Android.
Introducción
SECCIÓN 1
En los siguientes puntos de esta práctica, se van a tratar de describir las distintas opciones de
acceso a datos que proporciona la plataforma y en cómo se pueden realizar las tareas más
habituales dentro de este apartado.
La plataforma Android proporciona dos herramientas principales para el almacenamiento y
consulta de datos estructurados:
Bases de Datos SQLite
Content Providers
Esta práctica se centra en la primera opción, SQLite, que abarcará todas las tareas relacionadas
con el almacenamiento de los datos propios de una aplicación. El segundo de los mecanismos,
los Content Providers, que se trataran más adelante, facilitará la tarea de hacer visibles esos datos
a otras aplicaciones y, de forma recíproca, de permitir la consulta de datos publicados por terceros
desde una aplicación.
SQLite es un motor de bases de datos muy popular en la actualidad para ofrecer características tan
interesantes como su pequeño tamaño, no necesita servidor, precisa poca configuración,
es transaccional y por supuesto ser de código libre.
Android incorpora de serie todas las herramientas necesarias para la creación y gestión de bases
de datos SQLite, y entre ellas una completa API para llevar a cabo de manera sencilla todas las
tareas necesarias. Sin embargo, en este primer artículo sobre bases de datos en Android se va a
entrar en mucho detalle con esta API. Por el momento se limitará a ver el código necesario para
crear una base de datos, se insertará algún dato de prueba, y se verá cómo se puede comprobar
que todo funciona correctamente.
En Android, la forma típica para crear, actualizar, y conectar con una base de datos SQLite será a
través de una clase auxiliar llamada SQLiteOpenHelper, o para ser más exactos, de una clase
propia que derive de ella y que se debe personalizar para adaptarse a las necesidades concretas de
la aplicación.
La clase SQLiteOpenHelper tiene tan sólo un constructor, que normalmente no necesita
sobrescribirse, y dos métodos abstractos, onCreate() y onUpgrade(), que se deberá personalizar
con el código necesario para crear la base de datos y para actualizar su estructura
respectivamente.
Como ejemplo, se creará una base de datos muy sencilla llamada BDUsuarios, con una sola tabla
llamada Usuarios que contendrá sólo dos campos: nombre y email. Para ello, se va a crear una
clase derivada de SQLiteOpenHelper que se llama UsuariosSQLiteHelper, donde se sobrescriben
los métodos onCreate() y onUpgrade()para adaptarlos a la estructura de datos indicada:
packagenet.sgoliver.android.bd;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class UsuariosSQLiteHelper extends SQLiteOpenHelper {
//Sentencia SQL para crear la tabla de Usuarios
String sqlCreate = "CREATE TABLE Usuarios (codigo INTEGER, nombre TEXT)";
public UsuariosSQLiteHelper(Context contexto, String nombre,
Cursor Factoryfactory, int version) {
super(contexto, nombre, factory, version);
}
@Override
public void onCreate(SQLiteDatabasedb) {
//Se ejecuta la sentencia SQL de creación de la tabla
db.execSQL(sqlCreate);
}
@Override
public void onUpgrade(SQLiteDatabasedb, intversionAnterior, intversionNueva) {
//NOTA: Por simplicidad del ejemplo aquí utilizamos directamente la opción de
// eliminar la tabla anterior y crearla de nuevo vacía con el nuevo formato.
// Sin embargo lo normal será que haya que migrar datos de la tabla antigua
// a la nueva, por lo que este método debería ser más elaborado.
//Se elimina la versión anterior de la tabla
db.execSQL("DROP TABLE IF EXISTS Usuarios");
//Se crea la nueva versión de la tabla
db.execSQL(sqlCreate);
}
}
Lo primero que se hace es definir una variable llamado sqlCreate donde se almacena la
sentencia SQL para crear una tabla llamada Usuarios con los campos
alfanuméricos nombre e email. Para más información sobre SQLite se puede consultar
la documentación oficial.
El método onCreate() será ejecutado automáticamente por la
clase UsuariosDBHelper cuando sea necesaria la creación de la base de datos, es
decir, cuando aún no exista. Las tareas típicas que deben hacerse en este método serán
la creación de todas las tablas necesarias y la inserción de los datos iniciales si son
necesarios. En este caso, sólo se va a crear la tabla Usuarios descrita anteriormente.
Para la creación de la tabla se utilizará la sentencia SQL ya definida y se ejecutará contra
la base de datos utilizando el método más sencillo de los disponibles en la API de SQLite
proporcionada por Android, llamado execSQL(). Este método se limita a ejecutar
directamente el código SQL que se le pase como parámetro.
Por su parte, el método onUpgrade() se lanzará automáticamente cuando sea
necesaria una actualización de la estructura de la base de datos o una conversión de los
datos. Un ejemplo práctico: imagine que se publica una aplicación que utiliza una tabla
con los camposusuario e email (llamada versión 1 de la base de datos). Más
adelante, se amplia la funcionalidad de la aplicación y se necesita que la tabla también
incluya un campo adicional como por ejemplo con la edad del usuario (versión 2 de la
base de datos). Pues bien, para que todo funcione correctamente, la primera vez que se
ejecute la versión ampliada de la aplicación se necesitará modificar la estructura de la
tabla Usuarios para añadir el nuevo campo edad. Pues este tipo de cosas son las que
se encargará de hacer automáticamente el método onUpgrade() cuando se intente abrir
una versión concreta de la base de datos que aún no exista. Para ello, como parámetros
recibe la versión actual de la base de datos en el sistema, y la nueva versión a la que se
...