我的代码
@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的数据库浏览器中,它仍然可以正常工作。 请帮我
答案 0 :(得分:1)
对于https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#execSQL(java.lang.String)中的execSQL()
不支持用分号分隔的多个语句。
您试图在单个execSql()
调用中执行用分号分隔的多个语句。
如果需要,将sql语句分成6个或更多部分,并通过单独的execSql()
调用执行每个语句。