Oscar's Blog

Blog de Oscar Valenzuela - GNU con Linux, Free Software, Android, Hacking

Base de Datos Embebidas: De SQLite a Java con JDBC

29 Mar 2013


No es mi intención profundizar mucho sobre las diversas bases de datos embebidas que existen, sino lo más importante, sus funcionalidades y para lo que sirven.

En algunas ocasiones, cuando desarrollamos aplicaciones para el escritorio (que tal parece que está pasado de moda versus la web), y queremos ser prácticos a la hora de implementar bases de datos con estas futuras apps lo indicado sería usar db embebidas. A menos que nuestra aplicación se conectara a una base de datos externa por una URL. Pero si nuestra app no necesita compartir su base de datos sería un gasto innecesario tenerla en un servidor externo y mucho menos que nuestra aplicación se conectara a ella.

Es donde viene el concepto de base de datos embebida, donde podamos guardar información tanto temporal (que volquemos las tablas una vez cerrada la aplicación) como tener diversas propiedades que queramos que sean dinámicas, etc.

Un ejemplo es SQLite. Éste un motor de base de datos que no necesita implementación en un servidor ni configuración, es relacional y obviamente utiliza SQL para sus transacciones, además de ser rápida y ágil. Sus fuentes son de dominio público y es muy utilizado por ejemplo en aplicaciones Android, entre otros.

Tampoco me quiero extender con las bondades y obviamente desventajas de SQLite, para mayor información podemos usar Wikipedia o Google.

La mayoría de las distribuciones cuenta en sus repositorios con SQLite, sino puedes descargarlo desde su web oficial http://www.sqlite.org/.

El cliente que ocupo para este motor de base de datos es un complemento para Mozilla Firefox (compatible con Iceweasel e Icecat) llamado SQLite Manager y es bastante completo.

sqlite_manager

Del como crear una base de datos SQLite (extensión .sqlite) y tablas es bastante intuitivo y dar una explicación sobre ello estaría demás.

Para conectarnos desde Java necesitamos el driver jdbc, que podemos descargar desde su web oficial.

Una vez incluida la librería en nuestro proyecto, basta con lo siguiente:

protected Connection loadConnection(){
Connection con = null;

try{
//Instancia del driver JDBC de SQLite
DriverManager.registerDriver(new org.sqlite.JDBC());

//Creamos un objeto StringBuilder para concatenar String de conexión
StringBuilder strConUrl = new StringBuilder();
strConUrl.append("jdbc:sqlite:");
strConUrl.append("exampleApp.sqlite"); // URL de nuestra base de datos

con = DriverManager.getConnection(strConUrl.toString());

}catch(Exception e){
e.printStackTrace();
}

return con;
}

Del porqué ese método está protected, por la sencilla razón que por lo general, manejo las conexiones en una clase abstracta, para que las clases que necesiten conexiones tengan extender esta misma y sólo así puedan usar el método de conexión loadConnection(). Ese método retorna un objeto de tipo conexión a la base de datos SQLite.