Bases de Datos Android - Como crear una Base de Datos SQLite en Android

Crear Base de Datos.

SQLite es un motor de bases de datos muy popular en la actualidad por ofrecer características tan interesantes como su pequeño tamaño, su simplicidad en la configuración, ser transaccional y por supuesto... ¡ser de código libre!. Android incorpora 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 que necesitaremos en nuestra aplicacion, como insertar datos, leer datos y filtrar datos....

En Android, la forma típica para crear, actualizar, y conectar con una base de datos SQLite es a través de una clase auxiliar llamada SQLiteOpenHelper, esta clase tiene tan sólo un constructor, que normalmente no necesitaremos sobrescribir, y dos métodos abstractos, onCreate() y onUpgrade(), que deberemos personalizar con el código necesario para crear nuestra base de datos y para actualizar su estructura si fuese necesario.

Como ejemplo, voy a utilizar una aplicacion que hice hace unos meses ReForest (esta en GooglePlay), esta BD contiene una sola tabla llamada lugares que contiene varios campos. Esta es la Clase BaseDeDatos que use, esta es una clase tipica, no necesitas mas para crear una BD.

Propiedades, TextView, eclipse

Arriba ves una clase tipica para crear y gestionar una Base de datos, como ves no tiene mucho cogigo, costa de 3 partes claramente identificadas, una primera parte en la que definen las variables de tipo texto (String) que contendran las sentencias de SQL para crear las Tablas y/o actualizarlas, el metodo OnCreate de la clase, que es el encargado de crear la tabla, y por ultimo el metodo OnUpdate, que normalmente estara vacio, es el que utilizamos en el caso de necesitar crear alguna tabla nueva o algun campo nuevo, esto se utiliza si por ejemplo actualizamos nuestra aplicacion porque hemos añadido nuevas funcionalidades que requieren mas campos en nuestra BD.

Una sentencia SQL. El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar de forma sencilla información de interés de bases de datos, así como hacer cambios en ella.

Supongo que no tendras mucha idea es esto ¡no te preocupes! voy a explicar por encima las sentencias que vamos a usar. Una Base de Datos es como un contenedor, dentro de este puedes crear tantas tablas como quieras, las tablas son como organizadores, cuando tenemos muchos campos y una aplicacion compleja, lo normal es crear varias tablas, no esta bien crear todos los campos en una sola tabla (como poder se puede) pero no seria correcto por motivos de organizacion y sobre todo de rendimiento (a la hora de hacer las consultas cuanto mas grande es la tabla, es decir cuanto mas campos, mas tiempo se necesita para consultar los datos), en nuestro caso si es correcto crear una tabla, porque es una aplicacion sencilla con pocos campos. El ultimo componente de una BD son los campos, los campos son las columnas que tendra la tabla, y las filas seran los registros que contenga.

Propiedades, TextView, eclipse Propiedades, TextView, eclipse

Una tabla debe contener siempre un campo llamado ID en el caso de Android este campo se llamara _id asi en minusculas este campo es de tipo numerico y se auto-genera e incrementa con cada registro que añadimos a la BD, piensa que una base de datos es como un excel, contiene tantas columnas como campos, y tantas filas como registros y es necesario que cada fila se numere de forma unica, el campo _id es como el DNI de cada fila, de esta forma podremos encontrar la fila cuando la necesitemos, y en el caso de que creemos otras tablas ese campo _id sera en que necesitemos para relacionar cada tabla entre si, por eso este campo es muy importante. Voy a ponerte un ejemplo para que lo veas de forma mas grafica una tabla con datos y lo comprendas mejor:

Propiedades, TextView, eclipse

La tabla de arriba, contiene 4 campos (ID, Title, Type, Comment) y tiene 20 registros, fijate que el campo ID es el numerico y unico. Cuando consultemos una Base de Datos, en concreto esta tabla, pondremos un elemento llamado cursor en la primera FILA y nosotros medienate otras instrucciones seremos capaces de desplazarnos por ella, leer los registros, etc... mas adelante en proximas lecciones ya veremos como.

Ahora que a grandes rasgos ya sabes como es una Base de Datos vamos a ver el tema de las sentencias SQL en concreto comencemos con la de crear una Base de datos, fijate en cada parentesis y en cada coma TODO es necesario!!

Propiedades, TextView, eclipse

Estas sentencias son MUY sensibles tienes que respetar su sintasis, ahora vamos a analizar la sentencia:

String sqlCreate2 = "sentencia de SQL". Aqui se crea una variable de tipo texto que se llama sqlCreate2, entre las comillas se pone la sentencia de SQL, estas comillas no forman parte de la sentencia, son de la propia instruccion de Android para crear la variable de tipo texto.
CREATE TABLE lugares (campos a crear);. Aqui definimos el tipo de sentencia SQL, estamos diciendo que vamos a crear una tabla llamada lugares y entre los parentesis van los campos que contendra dicha tabla acabamos con el ; que es propio de la instruccion de Android, como hemos visto hasta aquicada instruccion de Android acaba con el ;.
_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT Aqui creamos el campo principal _id y el campo nombre que es de tipo texto, fijate con detalle que se pone siempre el nombre del campo seguido del tipo de dato y entre ellos se separan mediante 'comas' esto debe ser asi, lo normal es poner comas de mas o de menos, esto es un error muy habitual, presta atencion a las comas y parentesis!!.

Cuando llamemos a nuestra base de datos desde nuestro programa principal, este ira a la clase que hallamos creado con anterioidad que extiende de la clase SQLiteOpenHelper y ejecurara el codigo que se encuentra en el método onCreate() y cuando he dicho por primera vez, lo digo porque este codigo se ejecutara una unica vez, solo para crear la BD, una vez creada, este metodo no se volera a ejecutar NUNCA.

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 creo la tabla. Para la creación de la tabla uso la sentencia SQL que comente antes y la ejecutaremos 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(sentencia SQL). Este método se limita a ejecutar directamente el código SQL que le pasemos como parámetro.

execSQL, android, SQLite

La proxima leccion seguiremos analizando todo esto, espero que la cosa se valla entendiendo, no te agobies, poco a poco iras encajando el puzzle, recuerda que puedes opinar y/o sujerir mejoras en el FORO, por favor no te cortes, opina, mi objetivo es que puedas aprender a programar, y no me bienen mal opiniones constructivas para mejorar la web. Saludos!