新列未添加到onUpgrade Android中?

时间:2018-12-19 12:54:48

标签: android sqlite android-sqlite

我的代码

@Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
    if (oldVersion < 15) {
                String sql = "CREATE TEMPORARY TABLE temp_table(_id INTEGER UNIQUE, vendor_code TEXT UNIQUE, name TEXT, amount DOUBLE, price DOUBLE, unit TEXT, description TEXT, 'group' INTEGER); " +
                        "INSERT INTO temp_table(_id, name, amount, price, unit, description) " +
                        "SELECT _id, name, amount, price, unit, description FROM products_table; " +
                        "DROP TABLE products_table; " +
                        "CREATE TABLE products_table(_id INTEGER UNIQUE, vendor_code TEXT UNIQUE, name TEXT, amount DOUBLE, price DOUBLE, unit TEXT, description TEXT, 'group' INTEGER); " +
                        "INSERT INTO products_table SELECT _id, vendor_code, name, amount, price, unit, description, 'group' FROM temp_table; " +
                        "DROP TABLE temp_table; "

                database.execSQL(sql);
            }
    }

该代码正在运行,但不会创建错误,也不会更改表。 尽管在用于SQLite的数据库浏览器中,它仍然可以正常工作。 请帮我

1 个答案:

答案 0 :(得分:1)

对于https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#execSQL(java.lang.String)中的execSQL()

  

不支持用分号分隔的多个语句。

您试图在单个execSql()调用中执行用分号分隔的多个语句。
如果需要,将sql语句分成6个或更多部分,并通过单独的execSql()调用执行每个语句。