Si desea rellenar previamente una base de datos (SQLite) en Android, esto no es tan fácil como uno podría pensar.La forma más rápida y eficiente de rellenar previamente la base de datos en Android
Encontré this tutorial, que a menudo también se menciona aquí en Stack Overflow.
Pero realmente no me gusta esa manera de rellenar previamente la base de datos ya que toma el control del manejador de base de datos y crea los archivos usted mismo. Preferiría no tocar el sistema de archivos y dejar que el manejador de la base de datos haga todo por sí mismo.
Así que lo que pensé que uno podría hacer es crear la base de datos en onCreate del manejador de base de datos(), como de costumbre, pero luego cargar un archivo (.sql) desde/activos que contiene las instrucciones para rellenar los valores:
INSERT INTO testTable (name, pet) VALUES ('Mike', 'Tiger');
INSERT INTO testTable (name, pet) VALUES ('Tom', 'Cat');
...
Pero llamar a execSQL() en el controlador onCreate() realmente no funciona. Parece que el archivo/assets no debe tener más de 1 MB y el execSQL() solo ejecuta la primera declaración (Mike - Tiger).
¿Qué harías para rellenar previamente la base de datos?
¿Has leído la documentación de execSQL? ... de todos modos ... puedes almacenar datos en json o hacer un pre-análisis de DB temporal y copiarlo en la base de datos creada por hander – Selvin
Por supuesto, he leído eso. Sugieren usar un objeto ContentValues e insertarlo en la base de datos utilizando el método insert (...). Pero execSQL (...) no está mal. Y, cualquiera que sea el enfoque que elijas, no servirá mucho a la velocidad si eliges uno alternativo. – caw
Crear una base de datos de antemano y copiarla es exactamente lo que describí en la pregunta;) Y JSON no será más rápido que mi enfoque con el archivo de declaración .sql preconstruido. Debido a la conversión, será incluso más lento. – caw