0

我在我的项目中使用 Sqlite 作为数据库。我正在尝试将 Alter 与 modify 命令一起使用,但每次都失败。

switch (oldVersion) {
    case 1:
        db.execSQL("ALTER TABLE " + TABLE_NAME + " MODIFY "
                + MessageCountConstant.DATE + " INTEGER");
    default:
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

我得到的错误日志:

01-10 14:51:56.242: E/Database(1279): Failure 1 (near "MODIFY": syntax error) on 0x3702c0 when preparing 'ALTER TABLE messageCount MODIFY date INTEGER'.

谁能告诉我这个的原因以及正确的答案。提前致谢。

4

2 回答 2

3

要重命名您的表名,请使用,

alter table current_name rename to new_name;

无法直接更改列数据类型,但您可以使用以下技巧,

create table if not exists new_table (id integer, name text )

insert into new_table select * from old_table

drop table old_table

alter table new_table rename to old_table

上面的代码使用您想要的任何数据类型创建新表,然后从旧表中复制记录,然后删除旧表,最后,将新表重命名为旧表。

于 2013-01-10T10:38:55.440 回答
2

可以在这里看到http://www.sqlite.org/lang_altertable.html SQLite 不支持修改列类型。您可以删除表并重新创建它,或者转储数据库并手动更改列类型。(这里

于 2013-01-10T10:20:49.037 回答