Ho un database a cui voglio aggiungere una colonna, ho cambiato la versione del database statico ma quando eseguo il programma sul mio dispositivo la nuova colonna non è ancora lì quindi suppongo che il mio onUpdate
non venga chiamato e io sia non so perché.Aggiornamento delle versioni del database SQLite?
Ecco come ho creare il database
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);");
}
}
C'è qualcos'altro che devo fare per ottenere il onUpdate
ottenere chiamato? Ho provato a seguito this answer ma ancora nessun risultato
quindi dove posso chiamare getWritableDatabase? dovrei chiamarlo nel mio costruttore? – tyczj
ovunque tu voglia utilizzarlo ... Io in generale lo uso nel mio ContentProvider ma se non ne hai uno, dovrebbe essere scritto correttamente nel tuo codice, qualsiasi dove tu stia per inserire o aggiornare un getWritableDatabase deve essere chiamato, non è necessario forzare il suo uso. – Necronet
@tyczj ~ "dove posso chiamare getWritableDatabase?" Suppongo che stai usando la classe SQLiteOpenHelper per eseguire operazioni CRUD? In tal caso, chiamerai getWritableDatabase() quando ottieni un'istanza di SQLiteOpenHelper nel tuo codice. –