Un pequeño resumen sobre bases de datos, donde se describen varios motores de bases de datos.
Descripción completa
Descripción: base de datos
Descripción completa
Descripción completa
Todo Sobre Bases de DatosDescripción completa
Full description
Descripción completa
Descripción: Bases de Datos
Descripción: Informacion acerca de bases de datos Centralizadas
Descripción completa
base de datosDescripción completa
Trabajo de base de datos
Descripción completa
Full description
Trabajo de base de datosDescripción completa
Temario Bases de Datos DistribuidasDescripción completa
Creación de materiales didácticos Aplicaciones para dispositivos móviles
Lección 4 Bases de datos
Índice de contenido Introducción............................................................................................................................3 Bases de datos locales: TinyDB............................................................................................ 4 Compartir datos: TinyWebDB.............................................................................................. 10 Eemplo: !plicación para compartir notas entre "ro#esor y !lumno...............................1$ !plicación del "ro#esor................................................................................................1$ !plicación del !lumno................................................................................................. 1% En la pró&ima lección...........................................................................................................1'
$
Introducción Cuando utili(amos una aplicación) muc*as +eces es necesario almacenar in#ormación para usarla en #uturas sesiones de la aplicación. ,n claro eemplo pueden ser los datos de con#i-uración de un pro-rama) o un documento de te&to. En aplicaciones !ndroid) la meor manera de almacenar in#ormación es mediante bases de datos. !pp In+entor nos o#rece un mecanismo sencillo para tal caso: el bloue TinyDB para bases de datos locales) y el bloue TinyWebDB para bases de datos ue se almacenan de #orma remota. En este cap/tulo +eremos cómo usar ambos bloues en nuestras aplicaciones.
3
Bases de datos locales: TinyDB El bloue TinyDB lo encontramos en la pestaa Basic de la paleta del editor:
Es un elemento oculto) por tanto) cuando lo insertemos en nuestra +entana) nos aparecer debao de 2sta como los reloes:
El TinyDB es un elemento muy sencillo. 5o tiene nin-una propiedad y sus bloues son los si-uientes:
6os dos bloues ue ms nos interesan son 78et9alue) para leer un +alor de la base de datos) y 7;tore9alue para almacenarlo. Como +emos) ambos bloues tienen como parmetro una etiueta) 7ta-) con la ue identi#icamos el +alor almacenado. TinyDB) por tanto) es una base de datos muc*o ms simple ue las ue estamos acostumbrados a +er por eemplo) !ccess o its. ,n posible diseo lo encontramos en el #ic*ero 5otas.(ip:
4
El pro-rama tiene los si-uientes elementos: ,n Te&tBo& donde escribir una nota y un botón 7!adir para aadirla a nuestra lista. ,na etiueta 7
• •
9amos a aadir la #uncionalidad desde el Bloc? Editor. En primer lu-ar) necesitaremos tener una +ariable notas) ue ser una lista:
Cuando el usuario pulse el botón !adir) lo tenemos ue *acer es comprobar ue el usuario *a introducido un te&to y en tal caso aadir la nota a la lista:
@
En este caso) *acemos uso de una +ariable llamada te&to) donde almacenamos el te&to introducido por el usuario) pero sin espacios para eso usamos el bloue trim. ! continuación) probamos si dic*o te&to 5A est +ac/o. En tal caso) aadimos la nota a nuestra lista) mediante un procedimiento insertar5ota) y actuali(amos labelNotas mediante otro procedimiento) mostrarNotas. "or ltimo) borramos el TextBox para ue el usuario pueda escribir otra nota. El procedimiento insertarNota debe *acer dos cosas: insertar la nota en la lista) y actuali(ar nuestra base de datos:
9emos ue la lista de notas la almacenamos en la base de datos con el #ormato 7C;9) es decir) cada elemento separado por comas. "ara mostrar las notas) el procedimiento mostrarNotas debe recorrer nuestra lista) actuali(ando la etiueta labelNotas:
mostrarNotas, recorre la lista usando el bloue forEach. "ara cada elemento) aadimos el te&to a label5otas) insertando adems un pre#io con el nmero de nota:
!*ora) +amos a aadir #uncionalidad al 6ist"ic?er) para eliminar notas. En primer lu-ar) debemos ase-urarnos de ue el 6ist"ic?er +a a usar la lista notas. "ara ello podemos utili(ar el bloue list"ic?erEliminar.BeforePicking se encuentra en
9emos ue para eliminar notas) tambi2n podemos *acer un procedimiento ue acepte como parmetro el /ndice de la nota a eliminar:
!l i-ual ue ocurre al aadir una nue+a nota) debemos ase-urarnos de ue la base de datos se actuali(a cuando se borra un elemento. %
6a aplicación ue actualmente tenemos) nos permite aadir y eliminar notas) almacenndolas adems en la base de datos. "ara terminar la aplicación) debemos decirle a nuestro pro-rama ue) cuando arranue) recupere las notas de las base de datos y las muestre en pantalla. Esto lo podemos *acer dentro del bloue Screen1.Initialie:
"ara recuperar las notas de las base de datos) usamos el bloue TinyDB1.!et"al#e. El 7tag debe coincidir con el del +alor almacenado con TinyDB1.Store"al#e en este caso 7notas. 6as notas las recuperamos en una +ariable y comprobamos ue no est2 +ac/a. En tal caso) usamos el bloue $list from cs% ro&' para crear la lista a partir del +alor de la base de datos) y llamamos al procedimiento mostraNotas para actuali(ar labelNotas. El pro-rama en eecución debe tener un aspecto como 2ste:
F
Importante: Ejecutar Apps con TinyDB ;i *emos probado a eecutar la !pp desde el Bloc? Editor) nos daremos cuenta de ue cada +e( ue entramos) la base de datos est +ac/a. Esto es debido a ue realmente no se est eecutando la aplicación) sino ue se est abriendo para depurar) a partir del propio !pp In+entor. "ara eecutar la aplicación completa) debemos *acerlo desde el Editor) pulsando en 7"ac?a-e #or "*one y a continuación en 7DoGnload to Connected "*one. ;i no tenemos un mó+il conectado) el pro-rama se instalar en el Emulador ue estemos usando. Cuando el !pp In+entor nos a+ise de ue se *a instalado correctamente) podremos eecutarla desde el men de aplicaciones:
6as otras dos opciones de 7"ac?a-e #or "*one) eecutar usando el códi-o =H o -enerar el !") tambi2n son +lidas.
'
Compartir datos: Tinye!DB 6as bases de datos creadas con los TinyDB sólo sir+en para la aplicación instalada en nuestro mó+il. Esto nos limita ya ue no podemos compartir datos entre usuarios o di#erentes dispositi+os mó+iles. "ara permitirlo) !pp In+entor nos permite usar los elementos TinyWebDB) ue se encuentran en la pestaa $(ther St#ff' de la paleta del editor:
6as bases de datos TinyWebDB nos +an a permitir almacenar la in#ormación en un ser+idor Geb remoto) para poder compartir la in#ormación entre di#erentes usuarios) mó+iles o incluso acceder a ella desde un "C. !pp In+entor) por de#ecto) nos permite aloar sus datos en el ser+idor del
"odemos obser+ar ue) a di#erencia de TinyDB) el bloue Store"al#e no de+uel+e el +alor. Esto se debe a ue TinyWebDB #unciona de manera as"ncrona) lo ue si-ni#ica ue las tareas de leer y almacenar +alores se lle+arn a cabo en se-undo plano) produci2ndose un e+ento cuando termine. 6a e&plicación de ue sea as/ncrona se debe a ue el acceso a la Geb puede lle+ar tiempo) dependiendo de la cone&ión a internet. "or 10
tanto) para no blouear la aplicación mientras se accede a la Geb) TinyWebDB lo *ar en se-undo plano para ue) mientras tanto) podamos se-uir usando la aplicación. 6os e+entos del TinyWebDB son los si-uientes:
El primero) se llamar cuando TinyWebDB termine de leer un +alor. Como ar-umentos) nos dar el tag y el %alor . ;i tenemos +arios +alores) debemos) mediante bloues IK> E6;E) comprobar el tag para discriminar u2 +alor nos *a lle-ado:
El se-undo e+ento) "al#eStore- ) nos a+isar de ue un +alor se *a almacenado con 2&ito. 5ormalmente) cuando recibamos este e+ento) mostraremos un mensae en pantalla y poco ms. El ltimo e+ento) Web;er+iceError) ocurre cuando no *emos podido almacenar o recuperar un mensae. Em el ar-umento message nos dar un error el ser+idor) indicando el poru2.
11
Ejemplo: Aplicación para compartir notas entre #ro$esor y Alumno Basndonos en el pro-rama 5otas ya reali(ado) +amos a *acer una aplicación para ue el pro#esor pueda compartir notas con sus alumnos. "ara ello) +amos a *acer dos +ersiones de la aplicación: •
•
6a aplicación del "ro#esor) con la ue podremos aadir y eli minar notas) adems de +isuali(arlas. 6a aplicación del !lumno) en la ue sólo +amos a poder consultar las notas ue *aya escrito el pro#esor.
Aplicación del #ro$esor El diseo de la aplicación del pro#esor lo podemos +er en NotasProfesor.i4) y e s prcticamente el mismo ue ue el del eemplo anterior:
9emos ue *emos aadido) adems del TinyWebDB) un elemento Notifier At*er ;tu## dentro de la paleta del editor. Dic*o elemento nos permite de una #orma cómoda mostrar mensaes emer-entes: • • •
Burbuas con un mensae ue desaparecen de #orma automtica. Cuadros de dilo-o mostrando un te&to o pidiendo una con#irmación
5osotros usaremos el noti#ier para in#ormar de lo ue +a ocurriendo en se-undo plano con 1$
la base de datos. !ntes de aadir la #uncionalidad de la aplicación) lo primero ue +amos a *acer es entrar en la p-ina *ttp:JJGGG.-uid-enerator.comJ y obtener un 8,ID para nuestro tag en la base de datos. Es importante ue cada uno obten-a el suyo propio:
Con el 8,ID -enerado) podemos de#inir una +ariable ue usaremos como tag :
!l i-ual ue con la aplicación notas) necesitamos una lista donde -uardar los datos:
El botón de aadir notas tiene el mismo comportamiento:
13
Tambi2n tenemos el mismo comportamiento para el 6ist"ic?er de eliminar notas:
El procedimiento mostrarNotas tambi2n es i-ual al de la aplicación 5otas:
! partir de au/) +amos a aadir #uncionalidad ue es propia para la aplicación 5otas"ro#esor. En primer lu-ar) cuando se entre en la aplicación) debemos decirle al TinyWebDB1 ue recuper2 las notas del ser+idor. Esto lo podemos *acer con el bloue Screen1.Initialie5
"uesto ue el proceso de recuperar notas puede tardar un poco) con+iene in#ormar al usuario mediante el 5oti#ier1.;*oG!lert. Este bloue mostrar un mensae emer-ente con 14
el te&to 7Hecuperando notas.... Despu2s de unos se-undos) el mensae desaparecer. Como ya *emos dic*o anteriormente) el TinyWebDB1 nos a+isar mediante un e+ento cuando se *aya terminado de recuperar las notas:
El bloue tiene como ar-umentos el tag y el +alor recuperado. En nuestro caso) como sólo tenemos un tag ) podemos directamente utili(ar el +alor. !l i-ual ue con la aplicación 5otas) lo ue *acemos es comprobar si 5A est +ac/o) y en ese caso creamos la lista usando el bloue $list from cs% ro&' . "or ltimo) mostramos las notas e in#ormamos al usuario de ue el proceso de recuperación *a tenido 2&ito. En el caso de ue *aya ocurrido un error al acceder a la base de datos) tambi2n debemos in#ormar al usuario. "ara ello) usamos el bloue Web;er+iceError del TinyWebDB1:
"odemos +er ue para in#ormar del error usamos el bloue Notifier1.Sho&6essageDialog ) ya ue no ueremos ue el mensae desapare(ca de pantalla tras unos se-undos. !*ora +amos a aadir los m2todos para insertar y eliminar elementos. Estos son muy similares a los de la aplicación 5otas) pero usando el TinyWebDB1. El procedimiento insertar5ota es el si-uiente:
1@
!l i-ual ue antes) aadimos la nota a la lista. ! continuación) usamos el bloue TinWebDB1.Store"al#e para almacenar las notas en el ser+idor. Esta tarea tambi2n se eecuta en se-undo plano) por lo ue con+iene mostrar un mensae) usando el bloue Sho&7lert del elemento Notifier1. El procedimiento elminarNota es el si-uiente:
En este caso) como en el pro-rama 5otas) lo ue *acemos es borrar el elemento ue ocupa la posición 7n. ! continuación) -uardamos las notas en la base de datos y mostramos el mensae emer-ente para in#ormar al usuario. Cuando el proceso de -uardado se *aya lle+ado con 2&ito) !pp In+entor llamar al e+ento "al#eStore- ) del TinyWebDB1. 6o ue *aremos entonces ser mostrar un mensae para in#ormar ue todo *a ido bien:
"ara eecutar la aplicación 5otas"ro#esor) podemos usar directamente 7Connect to de+ice del Bloc? Editor) ya ue en este caso las notas estn almacenadas en internet) y no *ace #alta crear una base de datos local. 6as si-uientes capturas muestran la aplicación eecutndose:
1
Aplicación del Alumno En este caso) sólo se podrn leer las notas aadidas por el pro#esor) por lo ue el diseo es li-eramente di#erente al anterior:
En este caso) no e&iste la posibilidad de aadir notas y *emos incluido un botón !ctuali(ar para ue el alumno pueda descar-ar nue+amente la lista notas.
1%
6a implementación de este pro-rama se encuentra en Notas7l#mno.i4) y bsicamente es la misma ue la de NotasProfesor.i4, eliminando todo lo correspondiente a la edición de las notas. 6a eecución de la aplicación) unto con la del pro#esor) se muestra a continuación:
1F
En la pró%ima lección&&& En la pró&ima lección daremos un repaso a los elementos ue incluye !pp In+entor para manear im-enes) sonido y +/deo.