1

SQLite データベースを持つ Android アプリをアップグレードする必要があります。新しいバージョンでは、TEXT (ISO8601 文字列: ) の代わりにINTEGER ( からの秒数1970-01-01 00:00:00 UTC) を使用してオブジェクトを格納することにしました。java.util.DateYYYY-MM-DD HH:MM:SS.SSS

列の種類を変更することはできますか? または、新しい列を追加してから、日付オブジェクトを long に変換してから、古い列を削除し、最後に新しい列の名前を変更する必要がありますか? または、これを行うためのより良い/標準的な方法はありますか?

4

3 に答える 3

0

私はSQLiteOpenHelper#onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)を使用し、あなたが言ったように:

新しい列を追加し、日付オブジェクトを long に変換してから、古い列を削除し、最後に新しい列の名前を変更します

一方、ほとんどの場合、sqlite は型をあまり気にしないため、TEXT 所属の列に int を入れることができます。

于 2013-02-28T09:08:27.537 に答える
0

実際、@delor が SQLite はほとんど型がないと言ったように、http: //www.sqlite.org/datatypes.html を参照してください。 たった 1 つのクエリでテーブルを更新できます。 update t set d = strftime('%s', d)

于 2013-02-28T09:16:06.203 に答える
0

これはあなたを助けるかもしれません...

CREATE TABLE IF NOT EXISTS TEMP_TABLE (id integer 主キーの自動インクリメント、col2change integer not null、...)

INSERT INTO TEMP_TABLE SELECT * FROM EXISTING_TABLE

DROP TABLE EXISTING_TABLE

ALTER TABLE TEMP_TABLE RENAME TO EXISTING_TABLE
于 2013-02-28T09:10:30.627 に答える