«

»

oct 25 2011

Usando Android DataFramework en nuestro proyecto

En el anterior post os contabamos como generar nuestra estructura de datos gracias a Android DataFramework, somos conscientes de que ahi no queda la cosa y por eso hoy os contamos como trabajar con esos datos en nuestros proyectos.

Si quieres saber todo acerca de Android DataFramework sigue leyendo tras el salto.
 

En cada actividad donde quieras usar la base de datos deberás cargar la librería. Es importante que siempre se cargue la librería al empezar el método onCreate y cerrarla en el onDestroy

En el onCreate sería así (cambia “com.tu.paquete” por el paquete de tu programa):

 

try {
    DataFramework.getInstance().open(this, "com.tu.paquete");
} catch (Exception e) {
    e.printStackTrace();
}

 

El onDestroy sería de la siguiente manera:

 

@Override
protected void onDestroy() {
    super.onDestroy();
    DataFramework.getInstance().close();
}

 

De esta forma podrás usar la librería durante la actividad.
 

Trabajar con la clase Entity

La clase Entity recoge la información de un registro de la base de datos. Es importante entender que Android DataFramework usa un identificador “ID” para la base de datos que es la clave primaria, por lo cual nosotros no tenemos que crear uno. Este identificador se rellena automáticamente y nosotros no podemos modificarlo, aunque si podemos forzar a un identificador al crear una entidad.

Suponemos que tenemos una tabla llamada “categorias” con un campo “nombre”. Si queremos recoger la información del campo lo haríamos así:

 

Entity ent = new Entity("categoria", 1);

 

En este momento tendremos en la variable “ent” toda la información del registro con el identicador “1″ de la tabla “categoria”.

Para poder obtener la información del campo “nombre” haremos lo siguiente y nos devolverá la información del campo:

 

ent.getString("nombre");

 

Crear un nuevo registro

La clase Entity siempre debe tener un parámetro en el constructor que es el nombre de la tabla, el segundo parámetro es opcional y nos indicará el identificador del registro. Si no lo ponemos estaremos creando un nuevo registro en la base de datos que guardaremos cuando actualicemos todos los campos con el método “save()“.

Aquí un ejemplo:

 

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

 

El método setValue() tiene siempre dos parámetros, el primero el nombre del campo y el segundo el valor a actualizar. Finalmente guardamos el registro.

El identificador lo coloca Android DataFramework de forma automática y no debemos preocuparnos por él.

 

Modificar un registro

Simplemente tenemos que seleccionar el registro usando el identificador y guardarlo. Android DataFramework sabe en cada momento si es un nuevo registro o una modificación de un registro de la base de datos.

Un ejemplo:

 

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

 

Eliminar un registro

Simplemente usamos el método delete(), un ejemplo a continuación:

 

Entity ent = new Entity("categoria", 3);
ent.delete();

 

Recorrer una tabla

Para ello debemos usar un lista de entidades. El método getEntityList() de la instancia de la librería tiene 3 parámetros (el primero obligatorio los otros dos opcionales).

 

  • Primer parámetro, nombre de la tabla
  • Segundo parámetro, where de la consulta SQL
  • Tercer parámetro, order by de la consulta SQL

 

Imaginamos que tenemos una tabla llamada “personal” con 3 campos, “nombre”, “fecha” y “categoria_id”. Si queremos hacer una consulta de todos las personas de la categoría “3″ ordenada por fecha ascendente sería.

 

List<Entity> categories = DataFramework.getInstance().getEntityList("personal", "categoria_id = 3", "fecha asc");

 

Para recorrer ahora la lista haremos.

 

Iterator iter = categories.iterator();
while (iter.hasNext()) {
    Entity ent = (Entity)iter.next();
    System.out.println(ent.getString("nombre"));
}

 

Y con esto todo por hoy, mañana el tercer y último post sobre Android DataFramework.

 
fuente | https://github.com/javipacheco/Android-DataFramework
web del autor | El blog de Javielinux

Libreria | Descarga
 

Acerca del autor

JMPergar

Mobile Developer at @BeRepublic & Founder of @AndroCode. Silver Speaker & Member of Core Team at @GDGBarcelona.

  • Pingback: Usando MapViews: Desde el principio | Androcode()

  • luisfran

    He estado intentando ocupar la libreria que considero buenisima, pero tengo un inconveniente
    al pasar los parametros al contructor entity me dice que es de tipo cursor y no puedo asignarle un valor int
    por ejemplo:

    Entity ent = new Entity(“categoria”, 1);

    al pasar el parametro “categoria” no da problema pero al pasar el parametro “1″ dice que el constructor es del tipo cursor no de tipo int.

    Si pudieran asesorarme en eso gracias.

  • luisfran

    Ya resolvi la problematica amigos, mil disculpas no me habia percatado que el segundo parametro es del tipo long, lo resolvi creando una variable tipo long

    Long id=(long)1;
    Entity ent = new Entity(“categoria”, 1);

    Agradeciendo nuevamente tan excelente tutorial saludos desde El Salvador

  • luisfran

    Long id=(long)1;
    Entity ent = new Entity(“categoria”, id);

  • Link4past

    Existe algo parecido a la clase entity para mysql?, gracias por su tiempo y genial tuto!!

    • http://www.linkedin.com/in/jmpergar JMPergar

      ¿Que características tiene esa clase? En el tutorial hacemos uso de una clase Entity.

  • Angels

    Buenas, estoy incluyendo esta librería en mi proyecto, y me surge la duda al obtener los datos de las tablas. En el ejemplo se indica como mostrar los datos de una tabla en concreto, pero yo quiero sacar un listado resultado de dos tablas

    Quiero obtener los lugares de tipo “Monumento” (atributo nombre de la tabla tipo de lugares).

    No sé si el metodo getEntityList() puede recibir consultas a dos tablas.

    Un saludo y gracias

  • Angels

    Tengo dos tablas:
    Tipos de lugares
    Lugares (clave foránea a tipos de lugares)

    • http://www.linkedin.com/in/jmpergar JMPergar

      Pues esta librería la probé en su día pero no hice un uso intenso de ella, a bote pronto te diría que no, que lo tendrías que hacer a mano haciendo dos consultas, pero si quieres puedes contactar con el desarrollador de la librería en twitter @javielinux y te contará en más detalle.

  • Yadi

    Hola, soy nueva programando en android, estoy intentando usar la librería dataframework para leer los datos de una base de datos que ya está creada. He puesto el fichero.db en la carpeta assets, y el fichero tables.xml en res/xml, pero creo que me he olvidado de algún paso, pues no logro leer ningún registro de la db.
    Un saludo y Gracias.

  • Aironman

    Buenas,

    gracias por el tutorial. Tengo una duda

    ¿y si quiero coger un campo que es la foreign-key de otra tabla?, ¿Qué método habría que utilizar?

    Saludos y gracias