はあなたdatabase version
を一致させることができますするSQliteOpenHelper
クラスであり、データベースのバージョンが以前のバージョンから、より多くのであれば、その後onUpgrade()
fucntionで新しいテーブルを作成し、既存のテーブルに新しいデータを追加する場合は、新しい行を追加するコードを記述するか、inert
またはupdate
クエリで更新する必要があります。 また、alter
クエリによって既存のテーブルに新しい列を追加することもできます。
バージョンアップグレードの詳細については、こちらをご覧ください。あなたが最初のデータのための資産でデータベースファイルを追加している場合
https://riggaroo.co.za/android-sqlite-database-use-onupgrade-correctly/
は、その後、あなたはデータベースpragma
バージョンのthatsのは、我々がSQliteOpenHelper
クラスに渡すことができ、データベースのバージョンに過ぎない変更する必要があります。
は、私たちのONUPGRADEで
)(ONUPGRADEのサンプル下記参照、我々は次のように定義される:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.e(TAG, "Updating table from " + oldVersion + " to " + newVersion);
//Added new column to book table - book rating
if (oldVersion < 2){
db.execSQL(DROP + BookEntry.TABLE_NAME);
db.execSQL(BookEntry.SQL_CREATE_BOOK_ENTRY_TABLE);
}
//Rename table to book_information - this is where things will start failing.
if (oldVersion < 3){
db.execSQL(DROP + BookEntry.TABLE_NAME);
db.execSQL(BookEntry.SQL_CREATE_BOOK_ENTRY_TABLE);
}
// Add new column for a calculated value. By this time, if I am upgrading from version 2 to
// version 4, my table would already contain the new column I am trying to add below,
// which would result in a SQLException. These situations are sometimes difficult to spot,
// as you basically need to test from every different version of database to upgrade from.
// Some upgrades might work and some might fail with this method.
// It is best to follow the other method that is on the master branch of this repo.
if (oldVersion < 4){
db.execSQL("ALTER TABLE " + BookEntry.TABLE_NAME + " ADD COLUMN calculated_pages_times_rating INTEGER;");
}
//As you can probably imagine, this is a terrible way to do upgrades, Please DONT DO IT!!!!
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.e(TAG, "Updating table from " + oldVersion + " to " + newVersion);
//Added new column to book table - book rating
if (oldVersion < 2){
db.execSQL(DROP + BookEntry.TABLE_NAME);
db.execSQL(BookEntry.SQL_CREATE_BOOK_ENTRY_TABLE);
}
//Rename table to book_information - this is where things will start failing.
if (oldVersion < 3){
db.execSQL(DROP + BookEntry.TABLE_NAME);
db.execSQL(BookEntry.SQL_CREATE_BOOK_ENTRY_TABLE);
}
// Add new column for a calculated value. By this time, if I am upgrading from version 2 to
// version 4, my table would already contain the new column I am trying to add below,
// which would result in a SQLException. These situations are sometimes difficult to spot,
// as you basically need to test from every different version of database to upgrade from.
// Some upgrades might work and some might fail with this method.
// It is best to follow the other method that is on the master branch of this repo.
if (oldVersion < 4){
db.execSQL("ALTER TABLE " + BookEntry.TABLE_NAME + " ADD COLUMN calculated_pages_times_rating INTEGER;");
}
//As you can probably imagine, this is a terrible way to do upgrades, Please DONT DO IT!!!!
}
はい。あなたのデータが消去されます。 'onUpgrade()'メソッドで操作を実行する必要があります。あなたは 'ALTER'テーブルを実装すべきです。 – Piyush