Agregar nueva tabla a la base de datos después de que la aplicación se haya ejecutado una vez

Estoy haciendo una base de datos simple en Android. Quiero añadir una nueva tabla después de que mi código se haya ejecutado una vez. Ahora, cuando intento cambiar mi método onCreate () en la clase EventDataSqlHelper, mi aplicación se bloquea.

Esto es probablemente porque onCreate() asociado con SQLiteOpenHelper se ejecuta sólo cuando la aplicación se ejecuta por primera vez y no podemos hacer más modificaciones en él.

También intenté escribir una función separada para agregar la nueva tabla. Funcionó perfectamente en la primera ejecución. Pero puesto que en 2da exección sobrescribirá su base de datos anterior, por lo tanto hace que la aplicación se bloquee.

¿Hay alguna forma de agregar nuevas tablas a la base de datos si la base de datos ya se ha creado?

 package org.example.sqldemo; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.provider.BaseColumns; import android.util.Log; /** Helper to the database, manages versions and creation */ public class EventDataSQLHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "events.db"; private static final int DATABASE_VERSION = 1; // Table name public static final String TABLE = "events"; // Columns public static final String TIME = "time"; public static final String TITLE = "title"; public EventDataSQLHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table " + TABLE + "( " + BaseColumns._ID + " integer primary key autoincrement, " + TIME + " integer, " + TITLE + " text not null);"; Log.d("EventsData", "onCreate: " + sql); db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } 

3 Solutions collect form web for “Agregar nueva tabla a la base de datos después de que la aplicación se haya ejecutado una vez”

Esto es lo que es onUpgrade y DATABASE_VERSION .

Ejemplo:

  • Usted tiene una tabla de events , y se ejecuta en el teléfono.
  • Ahora decides, quieres una nueva tabla de users .

    1. Cambiar DATABASE_VERSION = 2; (Este es su número de versión)
    2. En onCreate() , crear todas las tablas ( create table events y create table users )
    3. En onUpgrade() , cree todas las tablas que cambiaron entre la versión oldVersion y newVersion ( create table users )
  • Más tarde, si desea agregar nuevas tablas, incremente DATABASE_VERSION nuevo y cree todas las tablas en onCreate y los cambios en onUpgrade

Puede utilizar CREATE TABLE IF NOT EXISTS TABLENAME ... como su consulta, que no sobrescribiría su tabla existente.

Pregunta ya resuelta aquí, todavía principiantes que no entienden ver este enlace.

https://youtu.be/OrJTtWrEfuc

  • Android table creation Fallo (cerca de "autoincrement": error de sintaxis)?
  • Ordenar una lista en orden ascendente por fecha desde sqlite
  • ¿JSON en un campo del sqlite?
  • Cómo realizar una prueba de unidad de migración de base de datos entre versiones
  • Android sqlite / problema de rendimiento BLOB
  • Consulta SQL para la relación de los hijos progenitores
  • Cómo guardar la matriz de bytes (byte ) en la tabla SQLite?
  • Inspeccionar android sqlite y IntelliJ
  • ¿Dónde se almacena la base de datos SQLite en el emulador de Android?
  • Error de Android: close () nunca se llamó explícitamente a la base de datos
  • Sincronizar las bases de datos sqlite con mysql
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.