【问题标题】:New column is not getting add in onUpgrade Android?onUpgrade Android 中没有添加新列?
【发布时间】:2018-12-19 12:54:47
【问题描述】:

我的代码

@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 的 DB Browser 中它可以正常工作。 请帮帮我

【问题讨论】:

    标签: java android sqlite android-sqlite


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      相关资源
      最近更新 更多