私はAndroidアプリケーションを作成し、データベースにアクセス、作成、アップグレードするためにSqliteOpenHelperクラスを拡張しています。古いバージョンのアプリケーションでは、ドメイン名をデータベースに保存していました。将来のバージョンでは、ドメイン名ではなく完全修飾URLを保存するように変更したいと考えています。 (たとえば、「example」を保存するために「www.example.com」を保存するために使用します)。 1つの要件は、アップグレード中にテーブルを削除しないようにして、この値を保持するテーブルを削除し、アップグレード後の完全なURLとして新しい値を書き込むことができないことです。アップグレード時にsqlite3データベースのデータを変更する
データベースのアップグレード時にテーブルなどを変更する方法はわかっていますが、アップグレード中にデータベース内のデータの値をアップグレードする方法があるかどうかは疑いがあります。
Sqliteのマニュアルを検索しましたが、探しているものが見つかりませんでした。
私が持っていた考えの1つは、SqliteOpenHelperのonUpgrade()メソッドでクエリを実行することでした。だから、のようなもの:上記のような戦略は、悪い習慣や私は考えていないよ、この固定のより明確な方法があるかどうかである場合
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
for (int i = oldVersion; i < newVersion; i++) {
if (oldVersion == VERSION_SAVING_DATA_AS_DOMAIN) {
//Query database for domain
//Convert domain to fully qualified url
//Write fully qualified url to database
//Do database upgrade
}
}
}
わかりません。
forループの代わりにIMOを使用すると、すべてを更新するためのフォールスルーのswitch文を持つ方がよいでしょう – tyczj