0

プロジェクトでデータベースとして Sqlite を使用しています。変更コマンドで Alter を使用しようとしていますが、毎回失敗します。

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 に答える