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.
También te puede interesar
Comentarios
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
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
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,
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
Saludos
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.
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).
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?
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.
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?
El blog de Javielinux


Felicidades por tu aportación!