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。