Android SqliteAssetHelper – fusionar las tablas de la base de datos del activo con el existente
Estoy utilizando Android SqliteAssetHelper biblioteca ( https://github.com/jgilfelt/android-sqlite-asset-helper ) He enviado mi base de datos utilizando esta biblioteca y la base de datos contiene algunos registros en table1. Ahora quiero actualizar mi aplicación con una nueva base de datos con registros adicionales que se deben insertar en la que ya envié. No estoy seguro de cómo escribir exactamente las secuencias de comandos SQL para la actualización, ya que el esquema es el mismo para ambas bases de datos. ¿Alguien probó esto?
- Actualizaciones de Android en Play Store
- SQLiteOpenHelper "onCreate" no se llama? (El DB no existe)
- Confuso respecto a SQLiteOpenHelper y crear varias tablas
- Java - java.lang.IllegalStateException: No se pudo leer la fila 0, col -1 de CursorWindow
- Problema con SQLiteOpenHelper en android 2.X y 3.X
- Cursor finalizado sin cerrar antes () Android
- Insertar datos JSON en la base de datos SQLite en android
- GetReadableDatabase a menudo, pero no siempre devuelve null
- ¿Por qué no puedo usar Resources.getSystem () sin un error de tiempo de ejecución?
- SQLiteOpenHelper sincronización
- SQLiteOpenHelper - ¿Cómo se crea la base de datos?
- Intentando probar SQLiteOpenHelper pero getWritableDatabase () lanza Null
- Uso de una base de datos SQLite en Libgdx
Después de los comentarios de la op en otras respuestas, se aclaró que hay dos bases de datos para fusionarse. El operador desea saber si existe una forma conveniente de combinar dos bases de datos junto con la biblioteca SQLiteAssetHelper.
Desafortunadamente, no hay una forma directa de hacerlo porque esa biblioteca también utiliza el mismo patrón de Android para ejecutar un script para modificar una base de datos existente.
La solución consiste en transformar la segunda base de datos (conjunto de 50 registros) en 50 instrucciones INSERT que se pondrán al lado de las 50 existentes. (Hay varias herramientas en Internet para simplificar ese paso para que no tenga que hacerlo a mano.) Así que siempre y cuando la lógica de negocios puede trabajar con ellos todos juntos pueden ir todos en la tabla original si los esquemas son los mismos; o si necesita separarlos, utilice los 50 INSERT aún, pero pídales INSERT a un nombre de tabla diferente.
Luego, una vez que tenga estas 50 instrucciones INSERT con los datos de las 50 nuevas filas, coloque las sentencias en un script de actualización y puede seguir la documentación estándar de la biblioteca sobre cómo ejecutar ese script a través de esta biblioteca.
Puede hacer que esto suceda usando sqldiff para encontrar las diferencias entre un DB antiguo y uno nuevo.
Llama a sqldiff en sus dos bases de datos y canaliza la salida a un archivo que se conforma al formato de actualización de SQL Asset Helper (es decir, <database_name>_upgrade_<from_version>-<to_version>.sql
).
Por lo tanto, todo sería sqldiff database.db database_new.db > database.db_upgrade_1-2.sql
Entonces apenas cerciórese de que el archivo .sql
esté en el directorio de los assets/databases
y cambie los números de versión en su código de Java (en el caso del ejemplo, de 1 a 2).
- Entrada social en Android con plumas JS back end
- Android, devolución de llamada cuando se completa el agrupamiento de mapas