Ho un'app e voglio aggiornare il suo database alla versione successiva aggiungendovi nuovi valori. I nuovi dati si trovano nel loro database temporaneo.
Questo è il mio onUpgrade()
metodo:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// version 2
try{
db.execSQL("ALTER TABLE tbl_questions ADD COLUMN q_fav BOOLEAN DEFAULT 0");
db.execSQL("ALTER TABLE tbl_users ADD COLUMN user_voted BOOLEAN DEFAULT 0");
db.execSQL("INSERT INTO tbl_categories (_id, cat_title) VALUES (3, "u0639u0645u0648u0645u06CC (u0639u0644u0648u0645 u0627u0646u0633u0627u0646u06CC)")");
db.execSQL("CREATE TABLE [tbl_schedule] (" +
"[_id] INTEGER PRIMARY KEY, " +
"[lesson_name] VARCHAR, " +
"[lesson_unit] VARCHAR, " +
"[teacher_name] VARCHAR, " +
"[exam_date] VARCHAR, " +
"[description] VARCHAR);");
db.setTransactionSuccessful();
db.endTransaction();
db.execSQL("ATTACH DATABASE "/data/data/com.andrun.payamenoo/databases/db_temp.sqlite" AS SRC;");
db.beginTransaction();
db.execSQL("INSERT INTO MAIN.tbl_questions SELECT * FROM SRC.tbl_questions;");
//db.execSQL("DETACH SRC;");
}catch(Exception e){
e.printStackTrace();
}finally{
}
super.onUpgrade(db, oldVersion, newVersion);
}
Quattro primi funzionano bene. Il problema è collegare la query. Il codice non genera alcuna eccezione o errore, ma non ha alcun effetto sul database e i nuovi dati non vengono aggiunti.
Come posso risolvere questo?
risposte:
1 per risposta № 1È necessario aumentare il numero passato nel costruttore SQLiteDatabaseOpenHelper.
Questa è la DB_VERSION, aumentandola, la tuaIl metodo onUpgrade verrà chiamato con i parametri che sono oldVersion (= da quale versione) e newVersion (= DB_VERSION che hai appena impostato), in base a questi numeri interi puoi eseguire ALTER TABLE su tutte le versioni.