1

私のアプリでは、2 つのデータベースを利用しています。

これは、データベース管理とデータベースに対して行われるすべてのクエリを処理するクラスです。

public class Database {

    private DbHelper DBHelper;
    private final Context Context;
    private SQLiteDatabase MyDBone, MyDBtwo;
    static Context ctx;

    private static class DbHelper extends SQLiteOpenHelper {
        public DbHelper(Context context, String dbName, int dbVersion) {
            super(context, dbName, null, dbVersion);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {

            // This is where the two databases are created                  
            }
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion) {
            // database upgrades are handled here
            }
        }
    }

    // database constructor
    public Database(Context c) {
        Context = c;
        ctx = c;
    }

    // database open
    public Database open() throws SQLException {

            DBHelper = new DbHelper(Context, BD_NAME, BD_VERSION);
            // I have here some if code to decide witch one of the bellow is used
            if{
            MyDBone = DBHelper.getWritableDatabase();
            } else{
            MyDBtwo = DBHelper.getWritableDatabase();
            }

        return this;
    }

    // database close
    public void close() {
        DBHelper.close();
    }

    public Cursor getData(........) {

        // My querys are made here

    }
}

私の問題は、データベースが大きすぎることです。onCreate メソッドでエラーが発生しています: The code of method onCreate(SQLiteDatabase) is exceeding the 65535bytes limit. 一方で、私のアプリのサイズは非常に大きくなっています。

データベースを変更できないため、この問題に対処する最善の方法を知りたいです。
私のアプリはオフラインで実行する必要があるため、Web サーバーでクエリを実行できません。

アプリの最初の実行時に、インターネット上のどこか (ドライブ、ドロップボックス、または反対側) からデータベースをダウンロードするのが最善のアプローチだと思いますが、私のプログラミングスキルは少し緑なので、これを必須に延期する必要があります将来的に行います。

私のデータベースクラスを維持し、APKにデータベースを事前にパックしてSDカードにインストールすることは可能ですか? 一方、これにより apk サイズが増加します (データベースの合計は 15 MB です)。

この問題を解決する最善の方法についてアドバイスをお願いします。

よろしく、

お気に入り

4

0 に答える 0