質問

基本的に、デバイスのユーザーデータ領域にコピーするSQLiteデータベースを使用するAndroidアプリの開発を完了しました。

Marketplaceアプリの更新手順がどのように行われるかはわかりませんが、どのようにテストできるかについても確信がありません。

現在、データベースがデバイスに存在するかどうかを確認し、そうでない場合はコピーします(通常、最初の起動時にのみ発生します)。更新されたアプリに新しいバージョンのデータベースがある場合はどうなりますか? Marketplaceの更新により、ユーザーデータが消去され、新しいデータベースが次の起動時にコピーされますか?

データベースの変更/レコード/などを追加して、新しいアプリでこれをパッケージ化すると、将来どうなりますか?このデータベースは古いデータベースを上書きしませんか?

それ以外の場合は、起動するたびにアプリバンドルからデータベースをコピーしてオーバーライドすることを避けるために、データベースファイルのサイズと日付を確認し、バンドル内のデータベースがより新しい場合にのみコピーする方法がありますか?

誰かが明確にする必要がある場合は、尋ねてください。

役に立ちましたか?

解決

私は似たようなことをしています。私がしたことはデータベースバージョンを設定することです。そして、データベースが存在するかどうかを確認すると、正しいバージョンであることを確認します。そうでない場合は、データベースからユーザーのお気に入りを保存し、DBを拭き取り、ユーザーのお気に入りを元に戻します。

これは私のアップグレードです

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 2) {

        System.out.println("Performing upgrade!");
        openDataBase();
        // save the old favorites
        Cursor mCursor = getFavorites();
        ArrayList<Stop> favs = allCursorToStops(mCursor);
        mCursor.close();

        deleteRecreate(db);

        openDataBase();

        for (int i = 0; i < favs.size(); i++)
            setFavorite(favs.get(i));

        close();

    } else {

        deleteRecreate(db);

    }
}

これが私が存在をチェックする場所です/アップグレードする必要があるかどうか

    boolean dbExist = checkDataBase();

    if(dbExist){
        // check if we need to upgrade
        openDataBase();
        int cVersion = myDataBase.getVersion();
        close();
        if(cVersion != VERSION)
            onUpgrade(myDataBase, myDataBase.getVersion(), VERSION);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top