Новая колонка не получает надстройки в обновлении Android? - PullRequest
0 голосов
/ 19 декабря 2018

Мой код

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

Код работает, но не создает ошибок и не изменяет таблицу.Хотя в DB Browser для SQLite все работает правильно.Помоги мне, пожалуйста

1 Ответ

0 голосов
/ 19 декабря 2018

Для execSQL() с: https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#execSQL(java.lang.String)

Несколько операторов, разделенных точкой с запятой, не поддерживаются.

Вы пытаетесь выполнить несколько операторов, разделенных точкой с запятой водин execSql() звонок.Разделите оператор SQL на 6 или более, если это необходимо, частей и выполните каждую с отдельным вызовом execSql().

...