我尝试使用以下
删除列openDB.execSQL("ALTER TABLE favs" + " DROP COLUMN favsCount");
LogCat提供以下消息:
11-07 21:18:29.238:ERROR / Database(13952):当准备'ALTER TABLE favs DROP COLUMN favsCount'时,0x34e550上的失败1(接近“DROP”:语法错误)。
是否无法删除Android版sqlite中的字段?
答案 0 :(得分:43)
抱歉,SQLite doesn't support DROP COLUMN:
(11)如何在SQLite中添加或删除现有表中的列。
SQLite限制了ALTER TABLE支持,您可以使用该支持将列添加到表的末尾或更改表的名称。 [...]
例如,假设您有一个名为“t1”的表,其中列名为“a”,“b”和“c”,并且您要从此表中删除列“c”。以下步骤说明了如何做到这一点:
BEGIN TRANSACTION; CREATE TEMPORARY TABLE t1_backup(a,b); INSERT INTO t1_backup SELECT a,b FROM t1; DROP TABLE t1; CREATE TABLE t1(a,b); INSERT INTO t1 SELECT a,b FROM t1_backup; DROP TABLE t1_backup; COMMIT;
所以基本上,你必须使用“复制,删除表,创建新表,复制”技术来删除列。
答案 1 :(得分:4)
因为mu太短,所以Sqlite不允许使用alter table来删除列。在这里,您可以看到alter syntax definition