10

私は基本的に、/data/data/com.company.app/databases/users.db などのデバイスのユーザー データ領域にコピーする SQLite データベースを利用する Android アプリの開発を完了しました。

マーケットプレイス アプリの更新手順がどのように行われるのか、またどのようにテストできるのかもわかりません。

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

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

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

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

4

1 に答える 1

12

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

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

    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);
于 2010-12-24T17:37:16.793 に答える