Tengo una base de datos a la que deseo agregar una columna, cambié la versión de la base de datos estática pero cuando ejecuto el programa en mi dispositivo la nueva columna todavía no está allí, así que supongo que mi onUpdate
no se llama y yo soy no estoy seguro de por qué.¿Está actualizando las versiones de la base de datos sqlite?
Éste es cómo crear la base de datos
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
createTables(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w("CalendarDB", "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS Events_Table");
onCreate(db);
}
private void createTables(SQLiteDatabase db){
db.execSQL("CREATE TABLE " + EVENTS_TABLE + "(" + ID + " integer primary key autoincrement, " +
EVENT + " TEXT, " + LOCATION + " TEXT, " + DESCRIPTION + " TEXT, " + DATE + " TEXT, " + START + " LONG, " + END + " TEXT, " + REAL_START_TIME + " TEXT,"
+ REAL_END_TIME + " TEXT," + COLOR + " TEXT, " + BLINK + " TEXT, " + VIBRATE + " TEXT, " + RING_TONE_PATH + " TEXT, " + ICON + " TEXT, " + REMINDERS +
" TEXT, " + START_WITH_REMINDER + " TEXT, " + CALENDAR_ID + " TEXT, " + EVENT_ID + " TEXT);");
}
}
¿hay algo más que tengo que hacer para obtener el onUpdate
a ser llamado? Probé siguiente this answer pero todavía no hay resultado
entonces, ¿dónde llamo getWritableDatabase? ¿Debería llamarlo en mi constructor? – tyczj
donde sea que vaya a usarlo ... En general, lo uso en mi ContentProvider, pero si no tiene uno, debería funcionar con fluidez en su código, en cualquier lugar donde vaya a insertar o actualizar un getWritableDatabase tiene que ser llamado, no es necesario forzar su uso. – Necronet
@tyczj ~ "¿dónde llamo getWritableDatabase entonces?" Supongo que está utilizando la clase SQLiteOpenHelper para realizar operaciones CRUD. En ese caso, llamaría a getWritableDatabase() cuando obtenga una instancia de SQLiteOpenHelper en su código. –