Поддържа ли SQLite Alter с команда Modify или не

Използвам 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'.

може ли някой да ми каже за причината за това, както и правилен отговор. Благодаря предварително.


person nitin tyagi    schedule 10.01.2013    source източник
comment
просто искаш да си смениш името?   -  person dd619    schedule 10.01.2013
comment
@dd619 . не, не просто искам да променя името, но искам да променя типа данни на колоната.   -  person nitin tyagi    schedule 10.01.2013


Отговори (2)


За да преименувате името на вашата таблица, използвайте,

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

горният код създава новата таблица с какъвто и тип данни да искате, след това копирайте записи от старата таблица, след това изтрийте старата таблица и накрая преименувайте новата таблица на старата.

person dd619    schedule 10.01.2013
comment
не искам да преименувам таблицата си, но искам да променя типа данни на колоната. - person nitin tyagi; 10.01.2013

Както може да се види тук http://www.sqlite.org/lang_altertable.html SQLite не не поддържа промяна на тип колона. Можете да премахнете таблицата и да я създадете отново или да направите дъмп на базата данни и да промените типа на колоната ръчно. (тук)

person K Roobroeck    schedule 10.01.2013
comment
добре благодаря. Разбрах..@ user1767746 може ли някой да ми каже още нещо В моята база данни на Sqlite записах дата в тип данни ДАТА. как мога да извлека тази дата от курсора. Благодаря предварително. - person nitin tyagi; 10.01.2013
comment
@nitintyagi stackoverflow. com/questions/9303115/ - person K Roobroeck; 10.01.2013