TransWikia.com

¿Cómo puedo almacenar y leer una base de datos SQLite (con datos previos) en android studio?

Stack Overflow en español Asked by Carlos Aguirre on January 4, 2021

No sé si el título ha sido claro, no trato de leer y escribir en una BD como hacemos de normal, hasta ahí no hay ningún problema. Hablo de guardar una BD con datos en la propia aplicación y poder acceder a ella, estamos utilizando Kotlin + ROOM. Y me parece que este es uno de los mayores retos que se nos pone por delante.

Estaba pensando si teníamos que hacer un monton de inserts si es la primera vez que se abre la aplicación. Sin embargo, si se pudiese crear y rellenar la BD en el PC y luego simplemente arrastrar a la carpeta RAW sería de gran utilidad. De momento no tanteamos el usar un servidor, sino que cada dispositivo tenga la BD en local, con la ventaja de que funcione offline.

PD: si me ayudais subiré una aplicación avanzada a PlayStore con todo lo que voy recopilando bien explicado, y hasta os puedo poner en los créditos.

One Answer

Anteriormente usando SQLite, la mejor opción era usar SQLiteAssetHelper que era capaz de leer tu base de datos la cual agregabas dentro del folder /assets; pero ahora con la introducción de Room esto no es un problema ya que nativamente soporta el uso de bases de datos prepobladas.

Para autocompletar una base de datos de Room a partir de un archivo de base de datos empaquetado previamente que está en cualquier lugar del directorio assets/ de la app, llama al método createFromAsset() del objeto RoomDatabase.Builder antes de llamar a build().

Ahora puedes crear tu base de datos, agregarla en el folder /assets y leerla de esta forma mediante el método databaseBuilder().

ejemplo, suponiendo que tu base de datos "Information.db" se encuentra dentro de /assets/databases de esta forma puedes adquirir la instancia de la base de datos:

 Room.databaseBuilder(appContext, AppDatabase.class, "Information.db")
.createFromAsset("databases/Information.db")
.build()

Correct answer by Jorgesys on January 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP