8

I m following this tutorial.http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

can any body please make me clear this chunk of code.

 // Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
            + KEY_PH_NO + " TEXT" + ")";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    // Create tables again
    onCreate(db);
}

Questions

What is the purpose of onUpgrade(); method?

When it is Called? as docs says this is Called when the database needs to be upgraded what does it means by upgrading the database?

Important

why we drop the table in this method and recreate?

Thanks in advance.

4

5 に答える 5

10

onUpgrade は基本的に、アプリの新しいバージョンの新しいデータベースの変更 (新しい列の追加、テーブルの追加など) を処理するためのものです。

onUpgrade では、テーブルの削除は必ずしも必要ではありません。すべては、ユース ケースによって異なります。古いバージョンのアプリからのデータを永続化しないことが要件である場合はドロップが役立ちますが、スキーマを変更するような場合は、変更スクリプトのみを使用する必要があります。

于 2013-03-27T19:46:41.393 に答える
5

アップグレードとは、データベース スキーマに変更が加えられ (バージョン番号が異なる)、アップグレードする必要があることを意味します。テーブルを削除して再作成することは、そのための 1 つの方法です。「alter table」ステートメントを発行することもできます。

于 2013-03-27T19:44:49.163 に答える
3

データベースを開くと、バージョン番号とそれが存在するかどうかがチェックされます。データベースを新しく作成するのではなく、単に「アップグレード」することができます。

良いチュートリアル: http://www.vogella.com/articles/AndroidSQLite/article.html

于 2013-03-27T19:42:58.283 に答える
1

このメソッドは、データベースのバージョンを更新するときに呼び出されます。既存のテーブルを削除し、onCreate メソッドが再度呼び出されたときに再度作成します。

于 2015-01-28T11:15:41.677 に答える
1

4 つの質問への回答:

1) onUpgrade の目的は、新しいデータベース構造を管理することです。簡単な機能でアプリを開始できます。たとえば、新しい列を追加する必要があるため、データベースのバージョンを 1 から 2 に増やし、onUpgrade で新しい列を追加するように指示する必要があります。ユーザーがアプリを更新すると、新しい列が追加されます。

2) onUpgrade は、データベースの新しいバージョンがあり、スーパー メソッドで int 番号をインクリメントしたときに呼び出されます (ここでは 1 であるため、最終的には 2 に変更します)。

 public static class DatabaseHelper extends SQLiteOpenHelper{
    DatabaseHelper(Context context){
        super (context,DATABASE_NAME,null,1);
    }

3)データベースを更新することの意味については、上記を参照してください

4)テーブルを削除して再作成します。テーブルを変更する(新しい機能に適合する新しい列を追加するなど)ため、続行する論理的な方法は、テーブルを「破棄」/削除してから新しいテーブルを作成する前に行うことができます。すべてのデータで。ただし、データを再作成すると、ID番号が連続することを意味する可能性がありますが(通常は連続していません。3が削除されているため、1、2、および..4になる可能性があります)、したがってドロップしてからテーブルを再度作成し、最終的に以前のデータをロードすると、この ID の一貫性を保つことができます。DROP の代わりに ALTER を使用したい場合もあります。なんで?通常、DROP を使用すると、ユーザーはデータベースに既にあるコンテンツを失うため、返事

于 2016-06-19T20:04:42.913 に答える