SQLite onUpgrade ()

Tengo un problema en la base de datos SQLite en android.

En mi método onCreate (SQLiteDatabase db) de la clase SQLiteOpenHelper, estoy creando tablas. Ahora tengo esta aplicación cargada en la playstore. Ahora pensé que necesito un coloumn más en esas mesas.

Si pongo una actualización de la aplicación en la playstore (con nuevas consultas en el método onCreate ()), la próxima vez se llamará el método OnUpgrade () y, por lo tanto, la tabla no se creará de nuevo.

así que por favor dígame hay alguna forma de eliminar la base de datos SQLite cuando la aplicación se reinstala o actualiza .. o eliminar la aplicación completa antes de volver a instalar?

1. Acerca de onCreate () y onUpdate ()

onCreate (..) se llama cuando la aplicación se instala recientemente. onUpgrade se llama cuando la aplicación se actualiza y se inicia y la versión de la base de datos no es la misma.

Necesitas un constructor como:

2. Aumentar la versión db

MyOpenHelper(Context context) { super(context, "dbname", null, 2); } 

IMPORTANTE: Incrementar la versión de la aplicación por sí solo no es suficiente para que onUpgrade se llame.

3. No se olvide de sus nuevos usuarios!

No te olvides de añadir

 database.execSQL(DATABASE_CREATE_color); 

a su método onCreate () o bien las aplicaciones recién instaladas carecerán de la tabla.

4. Cómo lidiar con múltiples cambios en la base de datos con el tiempo

Cuando tenga sucesivas actualizaciones de aplicaciones, varias de las cuales tienen actualizaciones de base de datos, desea asegurarse de comprobar la versión antigua:

 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch(oldVersion) { case 1: db.execSQL(DATABASE_CREATE_color); // we want both updates, so no break statement here... case 2: db.execSQL(DATABASE_CREATE_someothertable); } } 

De esta manera, cuando un usuario actualiza de la versión 1 a la versión 3, obtienen ambas actualizaciones. Cuando un usuario actualiza de la versión 2 a 3, sólo obtienen la actualización de la revisión 3 … Después de todo, no puede contar con el 100% de su base de usuarios para actualizar cada vez que publique una actualización. A veces se salta una actualización o 12 🙂

Esperemos que esto tenga sentido.

5. Mantener sus números de revisión bajo control mientras desarrolla

Y finalmente … llamando

 adb uninstall <yourpackagename> 

desinstala totalmente la aplicación. Cuando se instala de nuevo, se garantiza que golpear el método onCreate que le impide tener que seguir incrementando la versión de la base de datos en la estratosfera …

Según mi comprensión usted tiene que agregar apenas una columna.
Usted puede intentar con

 Alter table 

Ref- http://www.sqlite.org/lang_altertable.html

onCreate (SQLiteDatabase db) se llama sólo cuando se crea la base de datos por primera vez. Si desea manejar una actualización a una tabla existente, debe utilizar el onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) . Gestione específicamente las rutas de migración de oldVersion a newVersion

Esto puede no ser la mejor solución, pero he construido mi código para comparar los esquemas de tabla seleccionando las columnas que estoy buscando.

Si no están allí, obtendrá una excepción, y luego dejo caer / recrear las tablas. La próxima vez que la aplicación se ejecuta las columnas están allí, por lo que la selección funciona bien. No estoy seguro de su ideal, pero funciona,

  • ¿Cómo consultar la base de datos SQLite con dos condiciones?
  • SQLiteDatabase transacción anidada y solución alternativa
  • ¿Cómo puedo extraer la base de datos sqlite desde el dispositivo Android?
  • Insertar datos JSON en la base de datos SQLite en android
  • Android, cursor que devuelve valor booleano?
  • ¿Cómo sincronizar bases de datos SQLite y MySQL mediante notificaciones push?
  • ¿Qué hacer con Cursor después de una consulta SQLite?
  • NoClassDefFoundError al usar greenDao
  • Base de datos SQLite para aplicaciones de Android con múltiples usuarios potenciales
  • Android - ¿SimpleCursorAdapter permite múltiples diseños como BaseAdapter?
  • Android - SQLite ContentResolver insertar / eliminar / actualizar en UI Thread?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.