/ / Aggiornamento del database Android collegando il database - android, sqlite, android-sqlite, sqliteopenhelper, android-sql

Aggiornamento del database Android allegando database - android, sqlite, android-sqlite, sqliteopenhelper, android-sql

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.