【问题标题】:Is SQLite support Alter with Modify command or notSQLite 是否支持 Alter with Modify 命令
【发布时间】:2013-01-10 10:12:46
【问题描述】:

我在我的项目中使用 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'.

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

【问题讨论】:

  • 你只是想改名字吗?
  • @dd619 。不,我不仅想更改名称,还想更改列的数据类型。

标签: android sqlite alter


【解决方案1】:

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

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

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

【讨论】:

  • 我不想重命名我的表,但我想更改列的数据类型。
【解决方案2】:

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

【讨论】:

  • 好的,谢谢。我明白了..@ user1767746 谁能告诉我另一件事在我的 Sqlite 数据库中,我将日期保存在数据类型 DATE 中。我怎样才能从光标中获取这个日期。提前致谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
相关资源
最近更新 更多