El blog de Javielinux Usuario de Linux, Android developer, programador de aplicaciones web y experimentando con HTML5, CSS3 y Javascript

Android DataFramework - Trabajar de forma sencilla con Base de Datos en Android

Hace un tiempo hice una pequeña librería llamada TableDB para poder manejar base de datos de forma cómoda en plataformas Android. Si alguien ha trabajo con SQLite en Android, sabrá que es algo bastante tedioso. Cuando tu base de datos empieza a crecer, realmente te puede llevar mucho tiempo gestionarla.

Gracias a liberar el código un día Javier Ros Moreno pudo verlo y se puso en contacto conmigo. El estaba interesado en hacer algo parecido y había visto TableDB y le había gustado lo que estaba haciendo, aunque el quería hacer algunos cambios.

Evidentemente le dije que trabajásemos juntos en la librería, y han sido tantos los cambios que hasta le hemos cambiado el feo nombre que tenía por uno mejor: Android DataFrameWork.

Para poder trabajar mejor lo subimos a Google Code y Javier empezó a mejorar la librería, sobretodo el rendimiento de esta que dejaba mucho que desear. Ahora mismo la librería funciona mucho mejor y hemos ampliado sus funcionalidades:

  • Mejor rendimiento
  • Más sencilla de usar
  • Realizar backup y retores de la base de datos
  • Mejor manejo de las versiones de la base de datos
  • Serialización de los objetos Entity
  • Nombres de las métodos y variables

Y muchas otras cosas.

La librería actualmente está funcionando en AndAndo y MyMemo, además de otros proyectos que actualmente no están en Android Market.

En la página actual de Android DataFrameWork existe un wiki (aunque no está terminado) donde se explica como funciona la librería.

Espero que todos los que estén interesados en desarrollar aplicaciones en Android vean los beneficios de la librería y que reporten errores e ideas desde la misma página para ir ampliando sus funcionalidades.

Categorías Android

Comentarios

Sarundalf dice:
Llevo mucho detrás de una aplicación que me permita crear y gestionar bases de datos de la misma manera que he hecho hasta ahora con windows mobile. Sería muy interesante si aplicaras este Android Dataframework a un software que permitiera eso precisamente, crear y gestionar las bases de datos, serías el primero en hacerlo para Android, seguramente.
Felicidades por tu aportación!
javielinux dice:
La verdad que sería algo muy interesante, pero creo que tiene un problema. SQLite tiene los archivos .db. De principio supongo que no hay ningún problema para vincularlo a la librería y mediante los archivos XML saber la estructura de las tablas para crear los Activity que las gestionen

El problema es que no podemos acceder a las bases de datos de las aplicaciones sino es con acceso a root. La verdad que muchas veces he necesitado acceder a la base de datos para saber que se había grabado, y nada, es imposible

Realmente sería algo muy bueno... pero si el acceso a las base de datos de los programas sería prácticamente inútil, a no se que copiases el gestor dentro de tu programa y le dieras acceso, cosa que no tendría sentido para los usuarios, pero si para los desarrolladores

Habría que estudiarlo

Saludos
Yovany dice:
Hola.

me parece muy bueno el proyecto y estoy empezando a usarlo solo tengo una duda, yo estoy pensando en usar vistas como es que se crearian usando el dataframework.

Espero me puedas ayudar ya que no he encontrado información.
Saludos
javielinux dice:
Lo siento pero Android Dataframework no soporta vistas :-(
Tato dice:
Buenos días Javier,

Ya he estado mirando la wiki que tienes en google code. Pero tengo una duda.

El tema de backup lo enfocas supongo recogiendo el xml con el esquema de la base de datos y de sus registros. Después con un método se realiza el backup simplemente con esos dos xml esquema.xml y registrosDatos.xml. (Por poner un ejemplo)

Saludos y gracias de antemano,
javielinux dice:
Si es así

Tiene un método backup() que te guarda un XML con los datos y un método restore() al que le dices el XML con los datos y te los guarda en la base de datos

Los dos usando el "tables.xml" que es el archivo que tiene el esquema de la base de datos de la aplicación

Saludos
Roberto dice:
Hola, soy nuevo en el tema de Android. Alguien podria dar una capacitacion concreta sobre una aplicacion base que permita hacer el mantenimiento por ejemplo a una tabla de trabajadores.?

Saludos
Pablo de Tandil dice:
realmente vendria muy pero muy bien una especie de tutor en donde existiera un "sistemita" funcionando, simple nada mas... algo tipo... un sistemita (front, coneccion) de empleados o clientes por ejemplo.. una tonteria pero que se pueda apreciar como son los pasos a seguir para conectar , listar, etc.. el clasico ABM... digo.. tal vez es una tonteria lo que planteo pero seria interesante.
Daniel Román Cantero dice:
Os vais a reir de mí, pero en fin...
Acabo de empezar con la programación en Android y no sé exactamente donde debo poner la libreria en el Eclipse para que me la reconozca...
¿Me podeis echar una mano?

Gracias.

P.D.: Uso la versión Windows.
Alberto dice:
Antes de nada felicitaros por estas pedazos de aplicaciones y tutoriales que vais sacando. Soy nuevo con android y me gustaria saber si hay alguna forma de mostrar una lista donde el primer campo sería (siguiendo el ejemplo de las notas) el titulo de nota, y el segundo la categoría, que es una foreign key a otra tabla. Muchas gracias de antemano
Alvaro dice:
javielinux, ya sé que en el anterior mensaje dices que no has encontrado la manera de conseguir hacer una copia del archivo .db pero como no veo la fecha en la que está hecho el comentario, te lo vuelvo a preguntar; el asunto es que estoy usando tu librería (muy buen trabajo, por cierto) y he intentado algo extraño para sacar la bd:
DataFramework.getInstance().open(this, "com.bdprueba.proyecto");

.
.
.
CursorFactory factory = null;
DataFramework.mDataFramework.getDB().openOrCreateDatabase("/sdcard/BackupBuenoBDprueba", factory);

el asunto es que esta linea me saca en la tarjeta sd un archivo que no contiene nada, aparte de un poco de metadata de la bd android, y el locale usado.
imagino que tú ya has toqueteado esta opcion, y si no lo has hecho, sabrías decirme si voy bien encaminado? se podría poner el cursor factory ese apuntando a la bd creada de alguna manera y que así me la guarde bien?
(he de decir que la BD está creada, ya que acceder a los datos sí se puede mediante el entity y todo eso, tal y como explicas que hay que hacer en el wiki y/o en la web).
Alvaro dice:
pensando que antes no estbaa haciendolo bien y que con mDataFramework esta haciendo referencia a los metadatos,
he probado con la siguiente línea:

DataFramework.getInstance().getDB().openOrCreateDatabase("/sdcard/BackupBuenoBDprueba2", factory);

Pero tampoco consigo lo que quiero, el archivo BackupBuenoBDprueba2 se puede abrir, pero nuevamente no contiene los datos de mi bd, ni la estructura, solo algun dato sobre el locale y metada de android.
Ideas?
Felipe dice:
Hola, estoy usando su dll, que esta muy buena, tengo un problema, tengo una tabla que se creo en la base de datos, y esta no se debe generar siempre ya que contiene datos que se guardaron, por lo tanto cuando la aplicacion vuelva a iniciar esa tabla con los registros debo tenerlos disponibles para realizar una accion.

Quiero que de alguna forma, no tenga que volver a crearse la bd utilizando esto TableDB.getInstance().open(this, R.xml.tables, R.xml.initialvalues);
ya que segun lo que entiendo esto vuelve a configurar mi base de datos con las tablas y sus datos por defecto (dentro del xml), como puedo hacer para que TableDB.getInstance(), tenga una base que ya fue creada??, instanciarlo d alguna manera con un opendatabase , para poder realizar dsp el uso de las propiedades de TableBD ?, espero se entienda.
Felipe dice:
use esta instruccion colocada mas arriba DataFramework.getInstance().open(this, "com.bdprueba.proyecto"); y puedo leer los datos, pero cuando quiero cargar un spinner por ejemplo, hace referencia a TableBD y esta variable no tiene nada, como se hace para asginarle a tableBd.GetInstance lo que tiene DataFramework.getInstance() ??
phoenix_alx dice:
Buenas tardes, genial trabajo. Aunque me da un pequeño problema

Al añadir un nuevo dato en una tabla siguiendo estos pasos

Entity ent = new Entity("categoria");
ent.setValue("nombre", "Coche"); ent.save();

me devuelve un nullpointer y se me cierra la aplicación. He probado con una tabla vacía y con otra con algunos datos y nada. ¿A alguien le ocurre? ¿Se os ocurre alguna solución?
phoenix_alx dice:
Soy el de antes, ya está solucionado. Jejejeje
payday loan consolidation dice:
Hello! ¿Sabes si hacen algún complemento para ayudar con la optimización del Search Engine ? Estoy tratando de hacer que mi blog para clasificar para algunas palabras clave específicas, pero no estoy viendo muy buenos resultados. Si sabes de algún compartir, por favor . ¡Gracias !
search engine optimization vancouver dice:
Mi pareja y yo nos topamos aquí con un sitio web diferente y pensé que podría ver las cosas. Me gusta lo que veo , así que sólo estoy siguiendo. Esperamos explorar su página web por segunda vez .

Escribir un comentario