👨‍💻 Bases de datos en Android con ROOM

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 พ.ย. 2024

ความคิดเห็น • 200

  • @javiertorres-qs5bh
    @javiertorres-qs5bh 3 ปีที่แล้ว +7

    Muy buen video, bien explicado.
    Sobre el error que últimamente a la mayoría les sucede sobre "on a null object reference" en "val app = applicationContext as PersonApp"
    Lo solucione cambiando
    "val app = applicationContext as PersonApp"
    Por
    val app by lazy { applicationContext as PersonApp }
    Además que la clase "MyActivity" no sea "abstract"

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Gracias! Sí, es que en ese punto aún no se puede acceder al contexto, lo grabé mal. Esta es una solución perfectamente válida.

    • @javiertorres-qs5bh
      @javiertorres-qs5bh 3 ปีที่แล้ว +1

      @@devexpert_io Me siguió causando problemas y ni agregando la clase al manifest pude solucionarlo.
      Termine cambiando solo un poco el codigo en base a otro tutorial y eliminando el PersonApp.
      Gracias por tu contenido, sigo al pendiente

  • @johnalejandrogarciaarias9756
    @johnalejandrogarciaarias9756 4 ปีที่แล้ว +18

    Excelente video Antonio!... Tengo 3 preguntas para ti.
    1. Podrías hacer un video avanzado de Room, en donde incluyas migración de base de datos y unit testing?
    2. Que tal sencillo seria construir el DAO desde un archivo .db ya existente?
    3. Seria estupendo ver un ejemplo corto pero con más detalle del uso de Room + Livedata

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +8

      Tengo pendiente hacer vídeos del 1 y del 2. Para el 2 hay una nueva funcionalidad en Room que te permite prepoblar la base de datos, pero no sé cómo funciona ni de dónde se obtienen los datos. Lo que pasa que se me van acumulando temas, así que no puedo prometer cuándo los haré 😅

  • @ssmgeo3846
    @ssmgeo3846 ปีที่แล้ว +2

    Madre mía!!!En 16 minutos de video me acabas de aclarar 20 páginas de uso de SQLite y dos horas de videos de programación multimedia y dispositivos móviles de DAM de Ilerna....y oye, mira que los has explicado bien, fácil, y claro. Qué sería de los que estamos empezando sin estos videos maravillosos. Mil gracias!!!!

    • @devexpert_io
      @devexpert_io  ปีที่แล้ว

      Oh! Pues ya está, me has alegrado el día 🥰. Muchas gracias por tus palabras!

  • @camilochico3786
    @camilochico3786 3 ปีที่แล้ว +1

    Hola profe , ella un año este video y se le entiende a la perfección siga así , y gracias por tus consejos sirven mucho

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +1

      Muchas gracias Camilo, en esas estoy!! 😉

  • @JoseRodriguez-lu4ce
    @JoseRodriguez-lu4ce 3 ปีที่แล้ว +1

    Me estás ayudando un montón para hacer mi proyecto final de la FP. ¡Muchas gracias!

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      oh! qué ilusión, gracias a ti! Si ves que no encuentras algo, dime, por si tengo algún artículo que no tenga en formato vídeo o lo que sea

  • @edudlebal
    @edudlebal 4 ปีที่แล้ว +1

    ¡Excelente! Este tema ya lo dominaba pero nunca viene mal recordarlo.

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Genial! Gracias por echarle un ojo aún así ☺️

  • @chescored5887
    @chescored5887 4 ปีที่แล้ว +1

    Gracias Antonio por el vídeo, a mí me encanta el autocompletado de las Query, cuando tienes muchas entidades ayuda mucho. Los quebraderos de cabeza los tengo con los Date 🤦 y todavía no tengo claro si meter suspend, LiveData, los dos, sigo ejemplos y me apaño pero tengo que experimentar más con eso, saludos!!!

    • @chescored5887
      @chescored5887 4 ปีที่แล้ว +1

      He visto comentarios con los problemas que comento, la comunidad está en todo!

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Gracias por tus comentarios! Sí, hay muchos pequeños detalles que intentaré ir resolviendo en siguientes vídeos.

  • @alexisrivas433
    @alexisrivas433 4 ปีที่แล้ว +13

    Muy bueno , sería bueno que tocaras algo de test con room....

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +4

      Tomo nota! Gracias!

    • @ruif3r
      @ruif3r 4 ปีที่แล้ว +2

      Me sumo a esta peticion

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +2

      @@ruif3r ok! Gracias!

  • @yokozun4
    @yokozun4 4 ปีที่แล้ว +1

    Una vez más agradezco este material, es de mucha ayuda. Gracias Antonio!

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      A ti por estar y comentar siempre! Me ayuda mucho a seguir creando contenido. Un abrazo y muchas gracias!

  • @augustorojas9996
    @augustorojas9996 4 ปีที่แล้ว +1

    Antonio , gracias por compartir tu conocimiento, tu libro es una obra maestra!

  • @tomas.menniti
    @tomas.menniti 3 ปีที่แล้ว +1

    Muy didáctico y preparado el tutorial. Gracias por compartir, Antonio!

  • @gastondipierro
    @gastondipierro 4 ปีที่แล้ว +1

    Muy bueno Antonio... sería interesante ver las migraciones de base de datos y algo de test ! Muchas gracias !!!

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Lo tendré en cuenta. Gracias!

  • @gersalvarez8800
    @gersalvarez8800 4 ปีที่แล้ว +2

    Excelente video como siempre, estaría bien tener un ejemplo con una base de datos más grande y verlo en algun modelo de presentación

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Gracias! Me apunto como idea algún vídeo más avanzado. Lo de modelo de presentación te refieres a algo como MVP o MVVM? En realidad eso tiene poco que contar. Sería igual pero en otra clase. Si no lo he entendido bien, cuéntame!

    • @gersalvarez8800
      @gersalvarez8800 4 ปีที่แล้ว +1

      @@devexpert_io Así es con MVP O MVVM en qué parte estaría implementada la DB y organizada la estructura que mencionas en este video 😃. Quedamos ansiosos de ver más de tu contenido y videos muchas gracias por todo.

  • @tadeogonzalezalvarez6488
    @tadeogonzalezalvarez6488 4 ปีที่แล้ว +1

    Como siempre un gran vídeo, muchas gracias!!, me gustaría que indagaras mas con un ejemplo ORM para no realizar consultas sql directas a la BD.

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Ok, lo apunto! Aunque últimamente veo poco uso de este tipo de librerías

  • @magic8994
    @magic8994 4 ปีที่แล้ว +2

    Excelente explicacion Antonio, me ayudo mucho, muchas gracias !!

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Que alegría! Gracias a ti!

  • @CornetaSantaCruz
    @CornetaSantaCruz 4 ปีที่แล้ว +1

    Excelente video Antonio. Estaría muy bien ver más en detalle el apartado de migración así cómo el uso de flow con Room. Un saludo y gracias.

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Perfecto, gracias por el feedback!

  • @gustavoaguilargarcia9665
    @gustavoaguilargarcia9665 2 ปีที่แล้ว

    Muchas gracias por el video. Como siempre, claro y directo.
    Tengo un par de preguntas:
    1. He visto en algunos tutoriales que la base de datos la crean siguiendo un patrón singleton con algunas especificaciones para evitar problemas por acceso "multi-threading". ¿Cuál de los dos enfoques es más conveniente?
    2. ¿Hay algún problema en que las dataclasses que son las entities de room incluyan funcionalidad adicional (aparte de la implícita de las dataclasses)? Es decir, funciones a medida particulares para la realización de determinadas tareas.

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว +1

      1. Pudiendo crearlo en el application, o inyectado con un inyector de dependencias, no veo la necesidad de un singleton.
      2. Creo que técnicamente no hay problema, aunque no lo he probado...

    • @gustavoaguilargarcia9665
      @gustavoaguilargarcia9665 2 ปีที่แล้ว

      Gracias por la respuesta.
      1. ok. Es que nunca había extendido la Application para nada.
      2. Efectivamente, no parece que haya problema. He probado con una clase muy simple, con un par de métodos (en este caso, en un companion object) y ha funcionado: los datos se guardan y recuperan correctamente. Ha funcionado tanto si califico la clase como 'data class' como si no.
      Saludos.

  • @d-landjs
    @d-landjs 4 หลายเดือนก่อน

    Super entendible maestro, sera que tendrás un video más actualizado con Compose y probando eñ room

    • @devexpert_io
      @devexpert_io  4 หลายเดือนก่อน

      En el curso de 3 horas de Kotlin Multiplatform que publiqué el jueves se usa Room

  •  4 ปีที่แล้ว +1

    Antonio muchas gracias por el contenido. Como sugieres en el vídeo sería genial tratar un poco el tema de las migraciones. Nuevamente muchas gracias.

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Apuntado queda. Gracias!

  • @albertoluisrinconbarajas9282
    @albertoluisrinconbarajas9282 4 ปีที่แล้ว +1

    Genial! Cómo todos tus videos! Todo muy claro 🤓👏👨‍💻

  • @devexpert_io
    @devexpert_io  4 ปีที่แล้ว +2

    Si aún no te decides sobre si Kotlin es el lenguaje que deberías aprender, te animo a que te apuntes a mi masterclass gratuita 👉 bit.ly/3eRcwfu

  • @jairomarcelo1816
    @jairomarcelo1816 4 ปีที่แล้ว +1

    Buenísimo video Antonio, sería bueno que toques el tema de migraciones de base de datos

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Gracias Jairo! Lo tengo anotado para próximos vídeos, aunque la lista no para de crecer 😅

  • @activoysaludable
    @activoysaludable 3 ปีที่แล้ว +1

    Buen vídeo Bro. Aquí aprendiendo sobre room ahora jajjajaja

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +1

      Gracias! Te estás dando un buen repaso a todos los vídeos, enhorabuena!

  • @pablodavidflorezjaramillo2658
    @pablodavidflorezjaramillo2658 3 ปีที่แล้ว +1

    Muchas gracias Antonio por tan valiosa informacion.

  • @diegoalarcon7010
    @diegoalarcon7010 4 ปีที่แล้ว +3

    Muy buen video Antonio. Me gustaria si podes explicar como usar Flow en vez de LiveData. Saludos!

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +5

      Tengo pendiente hacer una serie de vídeos sobre Flow, y justo para eso hice este vídeo 😬, para luego poder usar una base de datos con Flow sin tener que explicar Room. Así que ahí va el spoiler 😆😆

  • @bigotes20random86
    @bigotes20random86 3 ปีที่แล้ว +2

    Muchas gracias por compartir tus conocimientos :D

  • @luchonetvv
    @luchonetvv 4 ปีที่แล้ว +2

    Excelente video!!!, otro video interesante podría ser otras alternativas que existen ademas de SQLite y Room, como por ejemplo Realm.

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Tomo nota para echarle un ojo, porque me da la sensación de que hoy en día todo se está abandonando en favor de Room

    • @luchonetvv
      @luchonetvv 4 ปีที่แล้ว +2

      @@devexpert_io muy cierto, actualmente la preferencia para nuevo desarrollo viene siendo Room inclusive proyectos legacy vienen haciendo transición poco a poco aprovechando que Room tiene muchas ventajas y sobre todo se acopla muy bien con la Arquitectura de Componentes, y muchísimas gracias, ya estoy ansioso por ver que nuevo material prepararás 😁😁😁

  • @paimei4815
    @paimei4815 3 ปีที่แล้ว +1

    Muy buen video la mejor explicación de implementación de room, no se si exista una forma de actualizar la base de datos con la inyección de un JSON o podrías hacer un video sobre eso

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Te refieres a precargar la base de datos la primera vez que se abre la App, o a descargar un json de un servidor y cargarlo en una base de datos? Gracias!

    • @paimei4815
      @paimei4815 3 ปีที่แล้ว +1

      @@devexpert_io Pues Antonio seria en ambas situaciones porque ese tema aun no lo tengo muy claro y los ejemplos que he visto me generan mas confusión

  • @mateoflorezjaramillo6808
    @mateoflorezjaramillo6808 3 ปีที่แล้ว +1

    Excelente contenido!! Bien hecho, tambien hace videos para java android ?

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Gracias! No, solo hago con Kotlin

  • @sergioalvarez9913
    @sergioalvarez9913 4 ปีที่แล้ว +1

    Genial Antonio! ¿Tienes pensado Ampliar sobre este tema? A un curso sobre esto yo me apuntaría.. :D

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Qué te gustaria ver en un curso así?

    • @sergioalvarez9913
      @sergioalvarez9913 4 ปีที่แล้ว +1

      @@devexpert_io pues un curso de room, de cero a casos prácticos!

    • @sergioalvarez9913
      @sergioalvarez9913 4 ปีที่แล้ว +1

      @@devexpert_io este video despierta mucho el interés

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      @@sergioalvarez9913 ok, tengo algunas cosas en mente donde algo así podría encajar. Pero tengo que definirlo bien y ver si es viable. Pensaré en ello! Gracias 🙇

  • @joseluiscobian4331
    @joseluiscobian4331 3 ปีที่แล้ว +1

    Algo que sería interesante y que ya comentaron es que se hablara del pre-populate o la aplicación de las migraciones.

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Sí, está apuntado, a ver si algún día puedo grabarlo. Gracias!

  • @hacheguioneme
    @hacheguioneme 3 ปีที่แล้ว +1

    Claro como el agua. Muchas gracias.

  • @SoyChoquero
    @SoyChoquero 2 ปีที่แล้ว

    Vendría bien este CRUD completo de Kotlin, mostrando como trabajar con ROOM y como integrarlo con la UI.

  • @bitabrah940
    @bitabrah940 3 ปีที่แล้ว +1

    🙌🏼🙌🏼🙌🏼 se agradece el vidio!

  • @drackon1995
    @drackon1995 2 ปีที่แล้ว +1

    Excelente video.
    Tengo una duda, como podria resetear el contador id, cuando elimino todos los elementos de mi tabla? Es que cuando comienzo a meter registros empieza agregar desde el ultimo id que habia generado anteriormente. Te agradeceria mucho si me pudieras ayudar.
    Saludos desde Mexico.

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว +1

      Pues la verdad que no lo sé, nunca lo he necesitado... Haciendo una búsqueda, esto es lo primero que me aparece, no parece que haya una opción muy directa... stackoverflow.com/questions/50878734/android-room-how-to-reset-auto-generated-table-primary-key-on-each-app-run

    • @drackon1995
      @drackon1995 2 ปีที่แล้ว

      @@devexpert_io Vale vale muchas gracias por tu respuesta. Ahí lo checo. Saludos 🙋🏻

  • @leorodseg
    @leorodseg 3 ปีที่แล้ว +2

    Estoy empezando a crear apps pero no tengo claro como poner una base de datos que tengo en local (tabla de Excel por ejemplo) en la propia app, es posible eso??
    Muchas gracias por tus vídeos!!

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +2

      Echa un ojo a esto a ver si te vale developer.android.com/training/data-storage/room/prepopulate

    • @leorodseg
      @leorodseg 3 ปีที่แล้ว +1

      @@devexpert_io muchas gracias!!

  • @jonathanfuentes3702
    @jonathanfuentes3702 3 ปีที่แล้ว +1

    muy bueno el video, bien explicado, queria consultar sobre personapp que extiende de application,
    solo hay que aclarar el name en el manisfest no? xq me da error cuando quiero iniciar la val app en el MainActivity,
    Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
    por lo que entiendo en es el context en PersonApp, cuando construyo el room

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Si, el contexto del application

    • @djuradof
      @djuradof 3 ปีที่แล้ว

      Hola, a qué te refieres con lo de ' aclarar el name en el manisfest', tengo ese mismo error y no sé cómo resolverlo. Ya añadí al manifest el nombre pero nada, sigo con el error al ejecutar la app
      Esto fue lo que añadí al manifest:

  • @miguelramirezagustin2037
    @miguelramirezagustin2037 4 ปีที่แล้ว +1

    muy bueno el video, podrías explicar como las migraciones de db, seria de mucha ayuda Saludos

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Claro! Lo tengo apuntado, pero se me acumulan los temas 😅. En cuanto pueda le hago un hueco.

  • @yokozun4
    @yokozun4 4 ปีที่แล้ว +1

    A la espera!!!

  • @amilcar2406
    @amilcar2406 2 ปีที่แล้ว +1

    hola antonio creo que realice todo tal cual explicas en el video pero al momento de ejecutar la app me da un error algo como "entities and pojos must have a usable public constructor and kotlin", como lo corrijo. muchas gracias

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      Entra en el discord y nos compartes código, así podemos ver por qué puede ser: devexperto.com/discord

  • @axeljurczuk1724
    @axeljurczuk1724 3 ปีที่แล้ว +1

    Excelente video! Gracias!

  • @rogersandresdiazbeltran2223
    @rogersandresdiazbeltran2223 4 ปีที่แล้ว +1

    Muy buenos contenidos Antonio!

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Muchas gracias!

    • @rogersandresdiazbeltran2223
      @rogersandresdiazbeltran2223 4 ปีที่แล้ว +1

      @@devexpert_io tengo ya varios años de exp en desarrollo android pero con java. Al ver tus vídeos usando kotlin me dan muchas ganas de aprender el lenguaje.

  • @luisrobertonavarro7581
    @luisrobertonavarro7581 4 ปีที่แล้ว +1

    Buenos días Antonio. Hoy actualicé mi Android Studio a la versión estable de 4.1. Y me encontré con el problema de no poder agregar en el build.gradle(:app) apply plugin: 'kotlin-kpt'. Por lo poquito que entiendo ahora en esta versión se ha modificado la estructura de este archivo ¿PUEDE SER? De entrada cuando inicio un nuevo proyecto viene con la siguiente estructura : plugins {
    id 'com.android.application'
    }

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Pues la verdad que no lo sé, yo he actualizado literalmente hace 5 minutos. Esa es la nueva forma de definir los plugins en Gradle, me sorprende que hayan pasado por dejar de soportar la antigua sin deprecarla antes, pero todo puede ser... La nueva forma para el plugin de KAPT sería así, por si te sirve: kotlinlang.org/docs/reference/kapt.html#using-in-gradle

  • @agustinkuran
    @agustinkuran 3 ปีที่แล้ว +1

    que bueno sería encontrar un tutorial con esta claridad pero en JAVA.

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Yo no hago vídeos en Java sorry, la mayor parte de la gente lo busca ya todo en Kotlin

  • @fabriziovit.developerandro8522
    @fabriziovit.developerandro8522 3 ปีที่แล้ว +1

    Hola antonio como siempre muchas gracias por tus videos, una consulta como podria guardar un texto ya creado osea un tipo "text" en un apartado de favoritos que tengo en mi app y tambien como quitarlo de favoritos con room. Tendras algun tutorial sobre ello? Gracias

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Gracias! No te sigo muy bien con la pregunta. Si quieres únete al Discord y por allí lo podemos hablar más tranquilamente: devexperto.com/comunidad

  • @ddeandroid5279
    @ddeandroid5279 4 ปีที่แล้ว +1

    Hola Antonio, excelente video. Solo me queda una duda. Por qué al final cuando dices que se puede ocupar con LiveData se le tiene que quitar el suspend?. Esa función de getAll ya no se llamaria desde la corutina entonces? Muchas Gracias de nuevo por esta serie de videos

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +2

      No hace falta porque Room se encarga de ejecutar las peticiones en segundo plano si usas un Observable (como LiveData)

  • @gabrielcastillo7692
    @gabrielcastillo7692 2 ปีที่แล้ว +1

    Buenas, estaba siguiendo el vídeo y cuando quise hacer pruebas, me arrojaba la siguiente excepción Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference, no sé a qué se deba, gracias.

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      Necesitas crear la base de datos en el onCreate() de application

    • @gabrielcastillo7692
      @gabrielcastillo7692 2 ปีที่แล้ว

      @@devexpert_io La tengo como se hace en el minuto 11:47 y de igual forma creo en el main activity la variable app, cómo se crearía en ese caso?, gracias

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      @@gabrielcastillo7692 a ver si escribo un artículo o algo. En el vídeo hay un fallo, pero ya no se puede cambiar. Es lo que te digo, crear la base de datos en el onCreate del application, en vez de hacerlo directamente como una property

    • @josephpaucar2179
      @josephpaucar2179 2 ปีที่แล้ว

      Pudiste resolverlo?

  • @luisrobertonavarro7581
    @luisrobertonavarro7581 4 ปีที่แล้ว +1

    Ahí logré registrar el Kapt en el Gradle. Pero el problema inicial continua. Tratando de depurar veo que es cuando val room = Room
    .databaseBuilder(this, PeopleDb::class.java, "person")
    .build(). Y se rompe la ejecución en el emulador "LA APLICACION SE DETUVO"

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Pero entiendo que el logcat te dará un error más o menos claro, no? Si quieres pásamelo por email, que hoy vi uno tuyo pero no lo pude contestar. Aunque creo que es eso que ya has solucionado

  • @cermenoandres9843
    @cermenoandres9843 4 ปีที่แล้ว +1

    Excelente Antonio, siempre muy claro y explicaciones fáciles de entender. Me hubiese gustado que trataras el caso especial de los campos tipo Fecha (Date) ya que no es soportado por SQL lite y tu siempre me agregas algo nuevo que no se jejejejeje... Saludos

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Eso se hace con TypeConverters, pero me lo apunto para otro vídeo. Gracias!

  • @JHONESTIVENGonzalez
    @JHONESTIVENGonzalez 2 ปีที่แล้ว +1

    Hola, muchas gracias, excelente video, tengo una duda si me puedes ayudar, al usar esta librería cada vez que agrego una nueva tabla, me pide eliminar la app de manera completa, como puedo hacer para que esto no ocurra?, gracias!!!

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      Muchas gracias Jhon, te invito a que te unas y traslades tus dudas por Discord, un saludo! 👉 devexperto.com/comunidad

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      Sí, cuando cambia la estructura de la base de datos, hay que reinstalar, o bien configurar el mecanismo de actualización de la base de datos. Si estás programando y los usuarios no están usando la app, lo mejor es simplemente reinstalar la app y listo

    • @JHONESTIVENGonzalez
      @JHONESTIVENGonzalez 2 ปีที่แล้ว +1

      @@devexpert_io Muchas gracias por invitarme, ya me he unido, he estado leyendo de apoco porque hay mucha información importante y aprendiendo un poco de como usar discord. Paso también para agradecerte por el materia tan bueno que se comparte por el canal de youtube

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      @@JHONESTIVENGonzalez gracias!

  • @cjuggernaut6634
    @cjuggernaut6634 3 หลายเดือนก่อน

    buenas, como puedo obtener un campo en room a partir del valor de una variable??
    *tengo 3 columnas
    id word defword
    la variable recibe un valor que esta en la columna "word" y en base a esto me devuelve el valor de "defword"
    gracias!

  • @luisrobertonavarro7581
    @luisrobertonavarro7581 4 ปีที่แล้ว +2

    El video es excelente, pero me tira error al poner val app = applicationContext as PersonApp en el MainActivity

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Habría que ver un poco más. Qué error te da?

    • @16jeremias
      @16jeremias 4 ปีที่แล้ว +1

      @@devexpert_io me arroja el mismo error en esa linea

    • @16jeremias
      @16jeremias 4 ปีที่แล้ว +1

      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.proyectobasededatos/com.example.proyectobasededatos.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

    • @16jeremias
      @16jeremias 4 ปีที่แล้ว

      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Ya veo... No está bien hacer una property como hice porque en ese punto puede que el application context aún no exista. Poned esa línea después del "setContentView". O se puede usar esa property pero usar el delegado "lazy".
      Otra opción interesante es hacer una función de extensión con esa línea, pero eso quizá daría para otro video 😅

  • @melchiah6603
    @melchiah6603 4 ปีที่แล้ว +1

    ¿Se pueden realizar mapeos para hacer relaciones con otras tablas, algo similar a JPQL (Spring)?

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      Sí, te dejo el enlace a la doc oficial developer.android.com/training/data-storage/room/relationships

  • @shiden16
    @shiden16 3 ปีที่แล้ว

    Muy buen video bien explicado, solo me quedo una duda, es posible realizar cualquier tipo de Query con Dao?, por ejemplo hacer el uso de SUM() o COUNT()?, para tenerlos en variables con LiveData?, Gracias y que tengan buen dia.

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +1

      Sí, se pueden hacer queries de ese tipo contra Room

  • @seba23571
    @seba23571 3 ปีที่แล้ว +1

    y en que directorio del sistema operativo android va a parar la base de dato sqlite ? gracias

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +1

      Genera una carpeta privada para esa App a la que solo puede acceder ella, por seguridad. En teléfonos rooteados te puedes saltar esa seguridad

    • @seba23571
      @seba23571 3 ปีที่แล้ว

      @@devexpert_io gracias logre encontrar esta en el directorio data/data/project-package/ en telefono rooteado o en elmulador no hizo falta que este en root .. muchas gracias

  • @dinodesa9894
    @dinodesa9894 3 ปีที่แล้ว

    Hola Antonio espero estes bien... tu video está muy bueno (bien explicado)... he realizado al pie todo lo que expones... al final se me genera un error "on a null object reference" en val app = applicationContext as PersonApp... espero puedas ayudarme con ello... Gracias por tu amable contribución.

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว +1

      Hola Dino, estoy centralizando las respuestas para todos en Discord, así que te invito a que te unas y traslades tus dudas allí, un saludo! 👉 devexperto.com/comunidad

  • @t91040
    @t91040 3 ปีที่แล้ว +1

    Hola Antonio, muchas gracias por sus tutoriales, necesito pedirle un favor grande, necesito que nos regales unos tutoriales de GraphQL en Android, para reemplazar retrofit.
    Y por otro lado quería preguntarle, conoces la app indriver?
    Si, si, sabes con qué tecnología se pudo haber programado le sección de esa app dónde se negocia los precios de una carrera y el cliente puede ir viendo la lista de solicitudes del transportador que le la lista puede ser un recyclerview pero cada una de las cardview tienen una linea de progreso que disminuye cuando los segundos se acaben, cuando el tiempo se acaba para que en cliente escoja la oferta.
    Esa sección es en tiempo real, he pensado en socket, he pensado en rx Java, en corrutinas, realmente pienso que indriver está hecha en firebase realtime database.

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Hola Erik, pues no conozco nada de ninguno de los dos temas, sorry...

  • @ssmgeo3846
    @ssmgeo3846 ปีที่แล้ว

    Buenas de nuevo!! Una pregunta que no he visto formulada. Si tienes una DB con tres o cuatro entities, cómo haces para añadirlas dentro de @Database? he probado dentro de los corchetes y da error y no encuentro nada en developer.android. ¿O tengo que crear una nueva base de datos?. Mil gracias!!!

    • @devexpert_io
      @devexpert_io  ปีที่แล้ว +1

      Deberías poder. Qué error te da? Si quieres entra en nuestro Discord y te intentamos ayudar por allí: devexperto.com/discord

    • @ssmgeo3846
      @ssmgeo3846 ปีที่แล้ว

      @@devexpert_io , me da este error: "Type mismatch: inferred type is KClass but Array was expected". Pero me meto en discord a preguntar desde ahí. Mil gracias!!!😃

  • @luisgamarrarosado3565
    @luisgamarrarosado3565 3 ปีที่แล้ว +1

    Muchas gracias

  • @jesusdevandroid1930
    @jesusdevandroid1930 3 ปีที่แล้ว +1

    Excelente video !!!

  • @lujossan.8508
    @lujossan.8508 4 ปีที่แล้ว +1

    Muy buen video, solo te tengo 2 dudas, ¿se pueden usa llaves foráneas con room? y si es así ¿qué sintaxis lleva?

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      En Room directamente puedes hacer que un objeto contenga otro objeto, y automáticamente es capaz de buscarlo en tabla correspondiente y recuperarlo. En algún momento haré un vídeo sobre esto, pero mientras puedes echar un ojo a la doc oficial para ver cómo se hace: developer.android.com/training/data-storage/room/relationships

  • @cjuggernaut6634
    @cjuggernaut6634 3 หลายเดือนก่อน

    como puedo definir un string como primaryKey?

  • @jeremiasivanchiricocmartin9047
    @jeremiasivanchiricocmartin9047 4 ปีที่แล้ว +1

    saludos, que tanto varia el desarrollo con java, ya que tu lo haces con kotlin

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Es prácticamente igual, no sé usa ninguna feature de Kotlin que Java no tenga en este vídeo

  • @danielsacchi649
    @danielsacchi649 6 หลายเดือนก่อน

    Excelente explicacion. Siendo 4/2024, ¿Hay algo deprecated en este video?

    • @devexpert_io
      @devexpert_io  6 หลายเดือนก่อน +1

      Solo que ahora se usa ksp en lugar de kapt para las dependencias que generan código. En este caso para el compilador de Room. Pero si no lo pones Android Studio te da un warning, así que seguramente lo detectarás rápido.

  • @alexandervcc
    @alexandervcc 3 ปีที่แล้ว +1

    Hola buen video. Talvez alguien me puede ayudar porfa, al ejecutar el codigo, me da un error de tratar de ejecutar el metodo en un objeto con referencia null. Haciendo referencia a la linea donde se instancia el PersonApp desde el Main

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Es complicado saber sin ver el código, sorry...

    • @leor285
      @leor285 3 ปีที่แล้ว

      @@devexpert_io Buenas tardes. A mi me ocurre exactamente lo mismo. Error:
      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
      Lei que pusiste de poner la linea donde creo el app luego del setContentView, pero luego el error es:
      java.lang.ClassCastException: android.app.Application cannot be cast to com.example.personasenbbdd.PersonaApp

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +1

      Comprobad que el contexto que le pasáis a la BD no es nulo

  • @enriquemartindelpomarleon
    @enriquemartindelpomarleon 3 ปีที่แล้ว +2

    Buen video, y si emulas el código para ver su función en la app?

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      No entiendo muy bien la pregunta, qué necesitas exactamente?

    • @enriquemartindelpomarleon
      @enriquemartindelpomarleon 3 ปีที่แล้ว

      @@devexpert_io pregunta podrías correr el código en el emulador para ver?

  • @roofedforest7937
    @roofedforest7937 4 ปีที่แล้ว +1

    Tengo una duda, yo se java, pero quiero hacer desarrollo android ¿Me conviene aprender con kotlin Por mas que yo ya sepa java y nada de kotlin?

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Si te quieres dedicar profesionalmente a ello, te lo recomiendo sí o sí. Apúntate a mi Training gratuito (lo puedes encontrar en el primer comentario o en la descripción) porque ahí te doy números para que veas la situación. Un abrazo!

    • @nomadeandy
      @nomadeandy 4 ปีที่แล้ว

      Además de todas las ventajas sobre Java, las búsquedas laborales de Android ya hace tiempo que vienen pidiendo Kotlin como excluyente. Te recomiendo que encares por ese lado totalmente!

  • @TheMarsal8
    @TheMarsal8 3 ปีที่แล้ว +1

    ¿Cómo se podría añadir otra tabla en la base de datos? Solo hay una tabla..

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      El proceso es el mismo, puede añadir tantas como quieras

    • @TheMarsal8
      @TheMarsal8 3 ปีที่แล้ว

      @@devexpert_io es decir, creando mas clases e interfaces? ej. ProductoDb, Producto, ProductoApp, ProductoDao. Serías así?
      ¿Y en cuanto a las relaciones de la base de datos?
      Sería de gran ayuda!! Muchas gracias!

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Para crear una tabla solo necesitas una entity y añadirla en la anotación de @Database, en el listado de entities. Luego si es una entity que tiene vida propia más allá de formar parte de otras entities, entonces merecerá la pena crearle un Dao propio. Lo de las relaciones es otro tema. Tengo pendiente hacer un vídeo en algún momento, pero si no en la referencia de Android está explicado

  • @usuario534
    @usuario534 3 ปีที่แล้ว

    Me aparece este error: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว

      Hola Jesús, estoy centralizando las respuestas para todos en Discord, así que te invito a que te unas y traslades tus dudas allí, un saludo! 👉 devexperto.com/comunidad

  • @eduaguilar5004
    @eduaguilar5004 6 หลายเดือนก่อน

    Pero cuando llamas a room no estas creando una y otra vez la bd?

    • @devexpert_io
      @devexpert_io  6 หลายเดือนก่อน

      No, la base de datos se crea solo una vez, luego realizas conexiones a la misma base de datos

  • @adrieleduardopalestinohern8535
    @adrieleduardopalestinohern8535 3 ปีที่แล้ว +1

    te amo!

  • @GRANDELIAS
    @GRANDELIAS 4 ปีที่แล้ว +1

    Muy bueno

  • @salazarw700
    @salazarw700 2 ปีที่แล้ว

    Hola , tendras algun video de room pero con java ?

  • @BitacoraTIMX
    @BitacoraTIMX 4 ปีที่แล้ว +1

    En resumen, ROOM = Un ORM inspirado en SpringData para Android

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว

      Ni idea 😅, pero si se parece a SpringData, puede ser.

  • @marvinguillen3211
    @marvinguillen3211 2 ปีที่แล้ว

    podes hacerlo para mssql server

    • @devexpert_io
      @devexpert_io  2 ปีที่แล้ว +1

      Si quieres proponer temas, puedes hacerlo en: devexperto.com/video-klisst

  • @cesarruiz7105
    @cesarruiz7105 ปีที่แล้ว

    Sabes ¿cuál es el límite de campos que me permite manejar ROOM en las Entities?.

    • @devexpert_io
      @devexpert_io  ปีที่แล้ว

      En principio el límite de SQLite es 2000, pero no sé si Room aplicará algún límite extra, no creo

  • @criptomonedasconmarshall7869
    @criptomonedasconmarshall7869 3 ปีที่แล้ว +3

    solo una pequeña aclaración, el campo edad(age) no se debe considerar ponerlo, ya que la edad es un dato calculado, se debería poner la fecha de nacimiento. Saludos

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว +1

      Gracias! Un apunte importante, sin duda

  • @ruif3r
    @ruif3r 4 ปีที่แล้ว +2

    Excelente video como siempre. Que lindas las waifus en la estanteria

    • @devexpert_io
      @devexpert_io  4 ปีที่แล้ว +1

      😂 no son waifus pero gracias!

  • @maikolsoro1835
    @maikolsoro1835 3 ปีที่แล้ว

    ¿Cuál es la mejor manera de traer 3 tablas relacionadas con room ?

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      Tengo pendiente hacer un vídeo del tema, pero puedes leer sobre ello aquí developer.android.com/training/data-storage/room/relationships

    • @maikolsoro1835
      @maikolsoro1835 3 ปีที่แล้ว +1

      @@devexpert_io Gracias

  • @RANDONcrafting
    @RANDONcrafting 3 ปีที่แล้ว

    pues no me funciona...

    • @devexpert_io
      @devexpert_io  3 ปีที่แล้ว

      qué te falla?

    • @RANDONcrafting
      @RANDONcrafting 3 ปีที่แล้ว

      @@devexpert_io en la parte que justo decías que no era necesario implementarlo en el manifest, pará que a mí me funcione tuve que implementarlo según lo que encontré en un foro.

    • @RANDONcrafting
      @RANDONcrafting 3 ปีที่แล้ว

      Y además del uso de singleton

  • @davidhernando4716
    @davidhernando4716 ปีที่แล้ว

    se sigue importando lifecycleScope? no me da a pesar de tener:
    implementation "androidx.room:room-ktx:2.5.0"
    kapt "androidx.room:room-compiler:2.5.0"
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
    en mi buildgradle

    • @devexpert_io
      @devexpert_io  ปีที่แล้ว +1

      Hay que importar activity-ktx para el lifecyclescope