2013-01-10 71 views
0

我在項目中使用Sqlite作爲數據庫。我正在嘗試使用修改命令Alter,但我每次都失敗。SQLite是否支持修改命令或不修改

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'. 

誰能告訴我的這種情況的原因,也合適的回答。提前致謝。

+0

你只是想改變你的名字? – dd619

+0

@ dd619。不,我不只是想改變名稱,但我想改變列的數據類型。 –

回答

2

從此處可以看出http://www.sqlite.org/lang_altertable.html SQLite不支持修改列類型。您可以刪除表並重新創建它,或者轉儲數據庫並手動更改列類型。 (here

+0

好的,謝謝。我明白了.. @ user1767746任何人都可以告訴我更多的事情在我的Sqlite數據庫中,我在DATE數據類型中保存了日期。我如何從光標獲取這個日期。 在此先感謝。 –

+0

@nitintyagi http://stackoverflow.com/questions/9303115/convert-date-from-sqlite-and-populate-a-listview –

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 

上面的代碼創建新表與任何你想要的數據類型,然後從舊錶中複製記錄,然後刪除舊錶,最後,將新表重命名爲舊錶。

+0

我不想重命名我的表,但我想改變列的數據類型。 –

+0

查看編輯答案 – dd619