[MUSIC] Bien, pues me encuentro en el ejemplo que hicimos hace un momento. Manejamos toda la persistencia con bases de datos, estuvimos manejando nuestros contactos en una tabla llamada contactos. Y estuvimos manejando también la cantidad de likes que se le está dando a un contacto, con la tabla contacto likes. Entonces vamos a ver donde está ubicada nuestra base de datos. Estoy en mi Android device monitor. Selecciono el emulador, que es este, marshmallow, y voy a ir al FileExplorer en la carpeta data, y después en data voy a buscar el paquete de mi aplicación. Mi aplicación se llama Com.antcode y debe ser este, este que se llama RecycleViewFragment. Entonces lo voy a abrir y aquà dice data bases y aquà está mi base de datos contactos. Yo puedo, a través de las herramientas del Android device monitor, traer este archivo de bases de datos. Y, como acabamos de explicar, puedo estar abriendo esta base de datos con ayudas, con herramientas adicionales. Y, por ejemplo, este es el caso de FireFox, que tiene un complemento. Si vamos aquà al menú de FireFox en la parte de complementos, tiene un complemento que se llama SQLite manager. A mi me aparece aquà porque yo you lo instalé que es a lo que yo te recomiendo que puedes estar... Es un manejador de bases de datos para SQLite. Si no lo tienes puedes buscarlo aquà donde dice buscar complementos, SQLite manager y simplemente lo instalas. Una vez que está you instalado te va a aparecer aquà en los complementos. Entonces para abrir esto iremos al menú de herramientas de FireFox y colocaremos SQLite manager. Entonces abro eso y ahorita me está lanzando un warning, pero listo. you está aquà mi manejador de bases de datos. Lo que sucede con este manejador de bases de datos es que con este icono de carpeta abierta podemos pasarle un archivo, un archivo SQLite o un archivo que tenga ese formato y entonces abrirá la base de datos. Ese archivo es exactamente lo que nosotros tenemos aquÃ, tenemos un archivo con formato de SQLite. Vamos nosotros a traerlo con este iconito de disquet, que lo que hará será traer el archivo y entonces podemos guardarlo en una carpeta de nuestra computadora. La voy a guardar ahorita en el escritorio, le voy a dar ahà en el escritorio guardar, y dice que you está guardado. Entonces vamos a ver el escritorio. Y lo guardo por acá, en mi otro escritorio. Este es el archivo SQLite. Entonces este archivo es el que estaremos abriendo con nuestro manejador de bases de datos, nuestro SQLite manager que tenemos aquà en FireFox. Le voy a dar aquà open y entonces voy a buscar por aquÃ. Aquà está mi archivo de contactos, mi base de datos, y listo. Entonces automáticamente me ha cargado you la base de datos, detecta que esta es la base de datos. Aquà están las tablas, dice que tiene cuatro tablas. Dos tablas que son auxiliares, android metadata y SQLite seconds. Son auxiliares para que la base de datos se contruya, para que pueda existir. Y las otras dos son nuestras tablas que nosotros hicimos aquÃ. Que nosotros hicimos en nuestros vÃdeos anteriores, nuestra tabla contacto, nuestra tabla contacto likes. Entonces de esta forma puedo estar debugeando la base de datos, puedo estar viendo que realmente las tablas se estén creando correctamente. Tengo el id, el nombre, el email, el id del contacto, el número de likes. Y entonces si abro por aquà alguna tabla en particular. Por ejemplo, en explorar y buscar pues puedo ver todos los registros que tengo insertados. Recuerdas que estuvimos corriendo nuestra aplicación varias veces y cada vez que la corrÃamos se insertaban tres registros. Entonces bueno, aquà está toda la recopilación de registros que se insertaron. Además también tenemos todos los likes que estuvimos dando. Entonces tenemos que, primero dimos un like al contacto con id uno y un like, un like, un like. Después al contacto dos le dimos dos likes y después le dimos otros cuatro likes al contacto id uno. Y asà es como podemos estar manejando, podemos estar debugeando, podemos estar viendo que todos nuestros registros se estén insertando correctamente. Podemos ver la estructura, aquà está, que los tipos de datos estén bien. Pero serÃa algo muy tedioso cada vez que yo estoy trabajando con mi base de datos, cada vez... Lo que yo tengo aquÃ, inserto un nuevo registro o ejecuto una nueva acción pues estar extrayendo este archivo y estarlo abriendo en SQLite manager. Esto es como un dato curioso que nos puede ayudar en algún momento. Pero también se complica cuando de repente tengo que estar extrayendo la base de datos y estar abriéndolo cada vez que ejecuto un nuevo un nuevo registro, una nueva acción. Entonces lo que haré será aprovechar lo que acabamos de ver hace un momento. Vamos a aprovechar nuestra lÃnea de comandos que tenemos disponible en android studio. Y entonces lo que haremos será entrar en la base de datos. Es decir, accesar a la base de datos, digamos en tiempo real. Entonces lo que estaremos haciendo es que ejecutaremos el comando adb y el comando adb lo que hace es entrar al Android Virtual Device, que es nuestro emulador. Y entonces entramos al Android Virtual Device y como recuerdas este dispositivo tiene un sistema operativo, un sistema operativo que es Android. Entonces podemos estar entrando en modo consola, y podemos estar además ejecutando, como está basado en Linux podemos estar ejecutando muchos de los comandos disponibles de Linux. Entonces uno de estos comandos es... Podemos ejecutar el comando SQLite tres, como vimos hace un momento, pudimos ejecutar este comando y tener acceso a la base de datos. Entonces lo primero es que tengo que estar ubicada en mi directorio platform tools, que está dentro de mi carpeta sdk. Sucede que muchas veces no sabemos donde está la carpeta sdk. Entonces podemos saberlo presionando el botón de sdk manager y lo que nos abre aquà en este momento, cuando empiece a abrir, estaremos viendo esto. Esta es la ruta donde cada vez que nosotros descargamos una pi de Android, aquà se está guardando todo, absolutamente todo. Entonces nosotros estaremos copiando esta ruta y voy a ir con el comando cd a esa ruta. Además voy a poner diagonal platform tools, que es donde básicamente me interesa mas estar, platform tools. Entonces puedes utilizar la consola de Android o puedes utilizar también tu consola, tu propia consola, tu propia terminal, para estar trabajando todo esto. Entonces cualquiera de estas cosas que quieras. Entonces puedes utilizar por acá tu terminal, la terminal de Mac o de Linux o el cmd de Windows también lo puedes utilizar y dirigirte a la ruta que te muestra el SDK manager. Como te comentaba el objetivo es llegar a la carpeta platform tools. Damos enter y voy a colocar el comando LS. LS solamente funciona en MAC y en Linux, para Windows serÃa el comando DIR. Entonces LS significa listar o mostrar todo lo que está contenido en esta carpeta. Y entonces vemos el comando ADB. El comando ADB es exactamente lo que yo necesito y voy a ejecutar mi comando ADB. Con la opción menos S y voy decirle que entre al emulador. Lo que yo tengo que saber es el identificador del emulador, que es este número que aparece en esta parte superior. Tres cincos y cuatro, entonces es emulator guión. También puedes saber los dispositivos que están conectados por ejemplo ejecutando devices, adbdevices. Y aquà entonces nos muestra el emulador que tenemos conectados, si tuvieras conectado un teléfono, una tableta, aquà también aparecerÃa. Entonces puedes copiar esto y podemos continuar por ADB-Semulator, nuestro emulador y vamos a decir que queremos entrar a la shell del emulador. Perfecto, como observas, entonces ahora he entrado you al shell del emulador. Me he conectado al sistema operativo a través de lÃnea de comandos y como observas pues soy el usuario root. Tengo absolutamente todos los permisos y entonces voy a empezar a entrar a mi base de datos. Para entrar a la base de datos tenemos que ejecutar el comando sqlite3 y en seguida colocar la ruta de la base de datos. Cual es la ruta, como recordamos es la carpeta DATA, enseguida el paquete de la aplicación que es com.anncode.recyclerviewfragments, posteriormente diagonal databases y entonces nuestra carpeta contactos. Entonces esto se parece mucho cuando nos queramos conectar a través de linea de comandos a través de mysql. Vamos a entrar a DATA. Y después viene el paquete de mi aplicación ancode. Se llama RecycleViewFragment. Puedes estar completando con tabulador, con Tab, y en seguida viene databases. Y por último la base de datos se llama contactos, entonces le voy a poner contactos, listo. Una vez que you he hecho esto le puedo dar Enter y listo. Dice aquà que you estamos en la versión 3ds de SQLite, no nos lanzó ningún warning, entramos perfectamente, aquà esta la base de datos contacto. Nos conectamos perfecto. Y entonces a continuación vamos a empezar a ver el comando, podemos ejecutar el comando .databases. Aquà todos los comandos en SQLite los vamos a manejar siempre antecediéndolos de un punto. Entonces el comando para ver las bases de datos es .databases. De hecho aquà nos dice el .help para poder estar viendo todos los comandos que tenemos disponibles. Entonces el que buscamos es este .databases, dice lista los nombres de los archivos de base de datos. Se lo va a poner .databases. ¿Okay? Enter. Y lo que nos está mostrando es nuestro archivo, nos está mostrando nuestra base de datos contactos. Y entonces lo que haremos será conectarnos a la base de datos, conectarnos a ella. you estamos ahà dentro. Y entonces ahora puedo utilizar el comando .tables para ver las tablas de esas bases de datos. ¿Okay? .tables. Y listo, aquà están mis tablas, mi tabla contacto y aquà también está mi tabla contacto likes. Puedo, a partir de ahora, you puedo ejecutar todos los comandos que conozco de SQL, select asterisco from tabla. Puedo ejecutar inserts, puedo ejecutar updates, puedo ejecutar absolutamente todos los comandos. Y si quieres saber mas a detalle la sintaxis pues entrar al sitio oficial de SQLite para ver mas a detalle la sintaxis. Entonces vamos a ver como está nuestra tabla contacto, y puedo ejecutar .schema contacto y me muestra el query que se ejecutó para generar este contacto. Puede entonces ahora hacer un select*from contacto; y me muestra todos los registros que están insertados. Igualmente puedo hacer un select asterisco from contacto_like. Y dice que no se encuentra una tabla. Probablemente es contacto likes. De nuevo, select asterisco from contacto_likes; y ahà están todos mis datos. Por supuesto es mucho mas bonito, mucho mas presentable estar viendo los datos asÃ. Pero la ventaja de esto es que aquà los estamos viendo en vivo. Entonces, por ejemplo, no perdamos de vista estos datos. Si yo ahora doy like a un contacto, por ejemplo ahora le doy like a otro del cuatro. Vamos a dar like al contacto que tiene su identificador cuatro. Este es el uno, el dos, el tres y el cuatro, este. Dice que ahora tiene tres likes. Vamos a ejecutar aquà de nuevo nuestro comando select asterisco from contacto_likes, y you he insertado otro registro. De esta forma puedo estar viendo en tiempo real como se está comportando. Y entonces, por ejemplo, puedo hacer un insert. Imagina que quiero hacer un insert into. Imagina que quiero insertar un like. Quiero insertarle un like al número dos, que ahorita tiene dos likes. Ok. Vamos a insertarle un like al número tres, a Mireya. Insert into from tabla. contacto likes. Después vienen los campos que quiero estar manejando. El campo serÃa el id contacto coma, y el otro campo se llama, vamos a revisarlo en nuestro modelo, número likes. Número likes seguido del comando values para meter, entonces insertar los valores. Y dijimos que al que le queremos insertar uno es al número tres, al tres, y le pondremos uno. Entonces vamos a poner tres coma uno, un like, listo. Le damos punto y coma. Esto no lleva form. Aquà es un súper error mÃo. Entonces nada mas vamos a copiar lo que está acá. Y you está. Perfecto. you se insertó. Entonces vamos a hacer de nuevo un select asterisco from tabla contacto likes punto y coma. Y you insertó uno de estos. En este momento pues todavÃa no lo vamos a ver, pero si le damos like a Mireya, en vez de ver cero likes vamos a ver este like mas uno mas que le estamos dando, serán dos likes. En efecto, ahora estamos viendo dos likes. Como ves, podemos estar alterando la base de datos, podemos estar monitoreándola, podemos estar debugeando la base de datos en tiempo real. Cuando yo esté lista para salir de aquà simplemente ejecutaré el comando quit, .quit. Y you salà de la terminal de SQLite y me encuentro ahora en la terminal del sistema operativo del Android, del emulador. Voy a dar exit enter. Y ahora you estoy de nuevo en mi computadora. Esta es la forma en como podemos estar debugeando nuestra base de datos en tiempo real. [MUSIC]