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

  • Sqlite eliminar la sintaxis de consulta en Android
  • Consulta SQLite que contiene caracteres especiales
  • Cómo probar si el cursor está vacío en una consulta SQLiteDatabase
  • No es posible obtener datos de la base de datos Sqlite
  • cómo guardar datos de json en sqlite en android
  • Número de versión para SQLite DB
  • Android SQLite Query - Obteniendo los últimos 10 registros
  • Mejor detección de corrupción de SQLite
  • Recuperar un nombre de usuario y una contraseña en SQLITE DB por EMAIL_ADDRESS en ANDROID
  • `RenamingDelegatingContext` está obsoleto. ¿Cómo probamos SQLite db ahora?
  • ¿Cómo obtener el ID guardado en SugarORM?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.