/ / Mise à jour de la base de données Android en attachant la base de données - android, sqlite, android-sqlite, sqliteopenhelper, android-sql

Mise à jour de la base de données Android en attachant une base de données - Android, sqlite, android-sqlite, sqliteopenhelper, android-sql

J'ai une application et je souhaite mettre à jour sa base de données vers la prochaine version en y ajoutant de nouvelles valeurs. Les nouvelles données sont dans leur base de données temporaire.

C'est mon onUpgrade() méthode:

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);
}

Quatre premiers fonctionnent bien. Le problème est lié à la requête. Le code ne lève aucune exception ni aucune erreur, mais il n'a également aucun effet sur la base de données et les nouvelles données ne sont pas ajoutées.

Comment puis-je réparer ça?

Réponses:

1 pour la réponse № 1

Vous devez augmenter le nombre que vous passez dans le constructeur SQLiteDatabaseOpenHelper.

C'est la DB_VERSION, en l'augmentant, votreLa méthode onUpgrade sera appelée avec les paramètres étant oldVersion (= à partir de quelle version) et newVersion (= DB_VERSION que vous venez de définir), en fonction de ces entiers, vous pouvez faire chaque ALTER TABLE pour toutes les versions.