2017-02-20 5 views
0

Google Playマーケットでアプリを公開しました。私はデータベース接続のためにSQLassethelperライブラリを使用しています。 実際に私のアプリはチュートリアルアプリです。ユーザーがマークしたお気に入りの質問を格納するテーブルもあります。 今質問表を更新したい、 私の質問は、更新された質問表で私のアプリケーションの新しいバージョンをリリースすると、お気に入りの質問の表が消去されますか?右? 私はどのようにユーザーのお気に入りのテーブルデータを消去しないで、そのデータベースの特定のテーブルのみを更新する私のアプリの新しいバージョンをリリースすることができますか? 私の質問に対する解決策はありますか?データベースアンドロイドの特定のテーブルを更新する新しいバージョンのアプリを公開します。

Thanx事前に。あなたは自分のユーザーデータについて、世話をする必要があるとonUpgrade()がある

+0

はい。あなたのデータが消去されます。 'onUpgrade()'メソッドで操作を実行する必要があります。あなたは 'ALTER'テーブルを実装すべきです。 – Piyush

答えて

1

はあなた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!!!! 


     } 
1

あなたは、データベースのバージョンがSQLiteOpenHelperクラス 無効ONUPGRADE(SQLiteDatabaseデシベル、 int型に変更したときoldVersion、 int newVersion) は、古いデータベースバージョンを持つユーザーに対して呼び出されます。 新しいデータベースバージョンで追加された変更を含めるには、ここでデータベースを変更する必要があります。 このメソッドからドロップテーブルコマンドを削除すると、既存のユーザーデータは削除されません。

+0

Thanx @Jagroshan。説明のために。 –

関連する問題