Actualización de la nueva versión a la tienda de aplicaciones con una estructura de db sqlite diferente

Cargué una aplicación en la tienda de aplicaciones (versión 1.0). Mi aplicación está utilizando una database sqlite para almacenar algunos datos. Ahora, he realizado algunos cambios en la database (he agregado 2 o 3 columnas nuevas en una de las tablas en mi database). Quiero actualizar la versión anterior de mi aplicación con la nueva versión 1.1 (que tiene una estructura de db diferente). Ahora, cuando los usuarios que ya están usando la versión 1.0 actualizan la aplicación a la versión 1.1, la database ya está presente en el entorno limitado de la aplicación y, por lo tanto, la aplicación apunta a la versión 1.1, pero mi database sigue siendo la anterior. Quiero tener la nueva base con los datos antiguos, si los hay. Por favor, ayúdame. Gracias.

sqlite admite algo llamado como propiedad user_version, puede ejecutar PRAGMA user_version para consultar la versión actual del esquema de su aplicación db. Esta consulta puede suceder escribir al principio cuando se inicia la aplicación.

para actualizar esta versión_usuario, ejecute la siguiente consulta de actualización: PRAGMA user_version = version_num ;

Cada vez que se crea sqlite db, es recomendable colocar esta propiedad user_version, de modo que cuando se actualice en el futuro pueda consultar el valor actual. Compruebe lo que necesita ser y ejecute alter restantes o cree tablas para actualizar su versión de esquema.

Por ejemplo:

En la primera versión, creo table1 con col1, col2

Ejecuté sql para crear table1 y, una vez que se realizó correctamente, ejecuté pragma user_version = 1. así que esto indicará que mi versión actual del esquema es 1

En la futura versión agrego nuevo col3, necesito cambiar la versión de mi esquema a 2

Primero consulté user_version, verifiqué su valor y si es 1, entonces debes ejecutar alter script para agregar una nueva columna y configurar la versión de usuario en 2.

En su caso, dado que no ha configurado la versión de usuario antes, sería difícil diferenciar un escenario nuevo de installation frente a una actualización. Así que por ahora puede suponer que si db está presente, es un escenario de actualización y ejecuta alter scripts, y si no está presente, supongamos que es un nuevo escenario de installation y ejecuta crear scripts. Pero mira si puedes usar el pragma anterior para resolver tu problema en el futuro al less.

Podría comprobar en el inicio si es la antigua, y si es así tener una rutina para crear una nueva base con la nueva estructura (con un nombre temporal), copie todos los datos de la antigua a la nueva, cierre la antigua database y elimine cierre la nueva database, cambie el nombre y finalmente vuelva a abrirla para que la use la aplicación actualizada. Fácil, rápido, y no necesita un conocimiento profundo de SQLite para hacerlo.