Android 通过附加数据库更新数据库
Android database update by attaching database
我有一个应用程序,我想通过向其添加新值来将其数据库更新到下一个版本。新数据在他们的临时数据库中。
这是我的onUpgrade()
方法:
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, '\u0639\u0645\u0648\u0645\u06CC (\u0639\u0644\u0648\u0645 \u0627\u0646\u0633\u0627\u0646\u06CC)')");
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);
}
四首好用。问题是附加查询。代码不会抛出任何异常或任何错误,但它对数据库也没有任何影响,也不会添加新数据。
我该如何解决这个问题?
您必须增加在 SQLiteDatabaseOpenHelper 构造函数中传递的数字。
也就是DB_VERSION,通过增加它,你的onUpgrade方法将被调用,参数是oldVersion(=来自哪个版本)和newVersion(=你刚刚设置的DB_VERSION) ,基于这些整数,您可以对所有版本执行每个 ALTER TABLE。
我有一个应用程序,我想通过向其添加新值来将其数据库更新到下一个版本。新数据在他们的临时数据库中。
这是我的onUpgrade()
方法:
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, '\u0639\u0645\u0648\u0645\u06CC (\u0639\u0644\u0648\u0645 \u0627\u0646\u0633\u0627\u0646\u06CC)')");
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);
}
四首好用。问题是附加查询。代码不会抛出任何异常或任何错误,但它对数据库也没有任何影响,也不会添加新数据。
我该如何解决这个问题?
您必须增加在 SQLiteDatabaseOpenHelper 构造函数中传递的数字。
也就是DB_VERSION,通过增加它,你的onUpgrade方法将被调用,参数是oldVersion(=来自哪个版本)和newVersion(=你刚刚设置的DB_VERSION) ,基于这些整数,您可以对所有版本执行每个 ALTER TABLE。