データを失うことなく、既存の DB にテーブルを追加したいと考えています。そのため、テーブルを削除して新しく作成することはできません。それを行う最善の方法は何ですか?
5 に答える
はるかに簡単なようです。SQLiteOpenHelper を使用します。そのため、DB が既に存在する場合、onCreate() は呼び出されません。バージョン番号が上がると、 onUpdate() が呼び出されます。onUpdate() で、「存在しない場合はテーブルを作成する」で新しいテーブルを追加しました。SQLITE.ORG のドキュメントから: ただし、「IF NOT EXISTS」句が CREATE TABLE ステートメントの一部として指定され、同じ名前のテーブルまたはビューが既に存在する場合、CREATE TABLE コマンドは単に効果がありません (そしてエラーメッセージが返されます)。これでテーブルが作成され、問題ありません。
私が行った方法は、別のデータベースを作成し、現在のデータベースから一時的な新しいデータベースにすべてをコピーしてから、古いデータベースを削除して、一時データベースから情報をコピーすることです。
それを行う別の方法があるかどうかはわかりませんが、もしあればそれについて聞いてみたいです
SQLiteOpenHelperを拡張するクラスを作成し、onOpen(SQLiteDatabase db)をオーバーライドし、テーブル作成クエリを使用して文字列を作成してから、db.execSQL(String str);を使用します。