4

私のAndroidアプリケーションでは、いくつかのデータを含むデータベースを作成しました。これはアプリストアにあります。新しい要件に従ってデータベースを変更する必要があります。apk ファイルを更新すると、新しいデータベースは既に作成されているため、再度作成されません。

ユーザーのデバイスに既に作成されているデータベースを更新するにはどうすればよいですか? sqlite db の onUpgread() メソッドを呼び出すにはどうすればよいですか? エミュレータで確認する方法はありますか?
提案してください。よろしくお願いします。

 @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME );

      onCreate(db);

}
4

2 に答える 2

4

onUpgradeデータベースのバージョンが上がった場合、このメソッドは自動的に呼び出されます。

データベースを作成するときは、バージョン番号を整数としてコンストラクターに指定します。例えば。

public class DatabaseHelper extends SQLiteOpenHelper{

static final String dbName = "myDatabase";
static int dbVersion = 3;

    public DatabaseHelper(Context context) {
        super(context, dbName, null, dbVersion);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // Create database
    }

上記の dbVersion を増やすと、データベースが再度作成されたときに、送信した現在のバージョン番号が追跡されるため、番号が増加したことがわかります。値が増加すると、そのコードがトリガーされonUpgrade、実行されます。

onUpgradeメソッドでは、異なるバージョン番号の間で何をするかを指定できます。たとえば、バージョン 2 と 3 の間だけでなく、バ​​ージョン 3 とバージョン 4 の間でもデータベースに変更が加えられる可能性があります。開発者が好きなだけAPKファイル!

これを行う簡単な方法は、ifステートメントを使用し、データベースを順番に更新することです。これにより、処理が時系列でアップグレードされます。

于 2012-09-21T08:59:31.523 に答える
1

データベースを更新するDATABASE_VERSIONために増やします。その時点でデータベースのバージョンを上げると、onUpgradeメソッドが呼び出されます。

于 2012-09-21T08:55:08.380 に答える