TableDBÍndiceMediante esta librería se podrá gestionar una base de datos SQLite dentro Android de una manera sencilla. Simplemente tendremos que crear un archivo XML y la librería se encargará de crear las tablas y ofrecernos una API mediante la cual podremos crear, modificar y eliminar registros de una manera sencilla y eficaz en nuestra aplicación. A continuación se explica como integrar esta librería dentro de nuestro proyecto y algunos ejemplos de como podemos usarla: Guardar la estructura en archivos XMLCon TableDB no tenemos que crear las sentencias SQL para creación de tablas, los archivos XML se encargan de esta tarea. El sistema se encargará, la primera vez que se abre la aplicación, de crear las base de datos y las tablas, además de tener la posibilidad de realizar una primera carga de registros en las tablas. Para ello TableDB trabaja con dos archivos XML que deben de ser guardados dentro de los recursos de la aplicación en la carpeta "xml" con un nombre específico. Estos son:
A continuación se pone como ejemplo el archivo "tables.xml" de la aplicación NadaList para explicar la estructura del fichero XML:
En el XML el nodo principal es "database" el cual tiene como atributos el nombre de la base de datos y la versión de esta. Con la versión podremos controlar nuestra base de datos y añadir campos o eliminar tablas sin tener que modificarla completamente. Dentro del nodo principal tenemos tantos nodos "table" como tablas tengamos en nuestra base de datos. Este tendrá como atributos el nombre de la tabla y el método toString() de la entidad. En él se podrán usar los campos de la tabla entre caracteres "%". Todas las tablas de la base de datos tienen un campo "_id" (por defecto), que es la clave primaria de la tabla. Dentro de las tablas tenemos los campos de esta contenidos en nodos "field". Este tendrá el nombre del campo, si este es obligatorio, valor por defecto, el tipo (que puede ser: int, text o foreign-key) y el tamaño (sólo para tipos text). El tipo foreign-key es un tipo especial ya que es una clave foránea a otra tabla. En nuestro ejemplo este campo contiene un identificador a la tabla "categories". Para establecer la tabla se usa el atributo foreign-table. Con esta información TableDB ya conoce nuestra base de datos y podremos trabajar con ella de una manera sencilla mediente el uso de objetos Entity. A continuación la estructura del archivo "initialvalues.xml" de la aplicación NadaList:
Este XML es más sencillo. Tenemos un nodo principal llamado "values" y dentro de él tantos nodos "row" como filas queramos añadir a nuestras tablas de la base de datos. Los atributos del nodo "row" son el nombre de la tabla donde queremos insertar el registro y el identificador. En el caso que no tenga identificador se pondrá el siguiente de la tabla. Dentro de "row" tendremos los nodos "field" con el nombre del campo y el valor que queremos insertar en él. Agregar librería al proyectoLos primero que tenemos que hacer es descargarnos la librería: Luego para incluir la librería a nuestro proyecto sólo tenemos que pulsar con el botón derecho del ratón en el nombre del proyecto y acceder a las propiedades. Una vez allí pulsamos en el menu de la izquierda en "Java Build Path". A la derecha pulsamos en la pestaña "Libraries" para finalmente pulsar en el botón "Add external Path" y buscar el archivo con la librería que nos hemos descargado:
Una vez hecho esto aceptamos y ya tenemos nuestra librería incluida en el proyecto. Usando la libreríaLa API de la librería contiene muchos métodos que devuelven desde objetos de la propia librería hasta cursores SQLite para poder agregarlos a los ListView o Combos de nuestra aplicación. Se usa el patrón Singleton para la clase principal llamada TableDB, la cual debemos de llamar al principio de nuestra aplicación.
try {
TableDB.getInstance().open(this, R.xml.tables, R.xml.initialvalues);
} catch (Exception e) {
e.printStackTrace();
}
De esta forma abrimos nuestra conexión con TableDB y esta se encargará de crear la Base de Datos si es necesario y leer los XML para poder trabajar con los datos. Cada uno de los registros de una tabla es una entidad (objeto "Entity"). Podemos crear una entidad de cualquiera de los registros de las tablas de nuestra base de datos, para ello usamos el constructor de la clase Entity, al cual se le pueden pasar uno o dos parámetros. El primero de los parámetros es obligatorio y es el nombre de la tabla, y el segundo es su identificador. En el caso de no pasar el segundo parámetro sería una nueva entidad por lo que a la hora de salvarla se crearía un nuevo registro en la Base de Datos. Un ejemplo de creación de nuevo registro sería:
Entity reg = new Entity("notes");
reg.addAllAttributes();
reg.setValue("title", "Título de la nota");
reg.setValue("body", "Descripción de la nota");
reg.save();
Esto crearía un nuevo registro en la tabla "notes". Si queremos modificar el campo "body" de un registro existente, por ejemplo de la entidad con identificador "3", haremos lo siguiente:
Entity reg = new Entity("notes", 3);
reg.addAllAttributes();
reg.setValue("body", "Cambio en el cuerpo de la nota");
reg.save();
Además la clase TableDB contiene muchos métodos que devuelven listas de entidades, cursores, etc. Un ejemplo sencilloPendiente de hacer. Mientras tanto se puedes ver el código de NadaList |