アイテムをデータベースにプリロードするためのより良い方法はありますか?

AJJ

私のAndroidアプリには

  1. SQLIteOpenHelperを拡張し、テーブルの作成やアップグレードなどを処理するSQLiteHelperクラス。

  2. SQLiteHelperオブジェクトに対してCRUD操作を実行するSQLiteDatasourceクラス。

ユーザーが最初にアプリを使用したときに何かが存在するように、特定のアイテムをテーブルの1つにプリロードしたいと思います。これらのアイテムは変更される可能性があるので、モジュール化したいと思います。

今私はそれをこのようにやっています:

public class MyDefaults {
    public static final ArrayList<HashMap<String, String>> MY_DEFAULTS;

    static {
        MY_DEFAULTS = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map = new HashMap<String, String>();

        //All the values below you change to whatever defaults you want
        map.clear();
        map.put(SQLiteHelper.KEY_1, "Value 1A");
        map.put(SQLiteHelper.KEY_2, "Value 2A");
        map.put(SQLiteHelper.KEY_3, "Value 3A");
        MY_DEFAULTS.add(new HashMap<String, String>(map));

        map.clear();
        map.put(SQLiteHelper.KEY_1, "Value 1B");
        map.put(SQLiteHelper.KEY_2, "Value 2B");
        map.put(SQLiteHelper.KEY_3, "Value 3B");
        MY_DEFAULTS.add(new HashMap<String, String>(map));

        map.clear();
        map.put(SQLiteHelper.KEY_1, "Value 1C");
        map.put(SQLiteHelper.KEY_2, "Value 2C");
        map.put(SQLiteHelper.KEY_3, "Value 3C");
        MY_DEFAULTS.add(new HashMap<String, String>(map));

        //and so on
    }

}

そして、SQLiteDatasourceクラスに、次のデフォルト値の挿入を実行するメソッドがあります。

public void preloadDefaults() {
    mDatabase.beginTransaction();

    try {
        for (HashMap<String, String> map : MyDefaults.MY_DEFAULTS) {
            ContentValues values = new ContentValues();
            values.put(SQLiteHelper.KEY_1, map.get(SQLiteHelper.KEY_1));
            values.put(SQLiteHelper.KEY_2, map.get(SQLiteHelper.KEY_2));
            values.put(SQLiteHelper.KEY_3, map.get(SQLiteHelper.KEY_3));
            mDatabase.insert(SQLiteHelper.SOME_TABLE, null, values);
        }
    }
    finally {
        mDatabase.endTransaction();
    }
}

これを行う私の方法は悪い習慣と見なされますか?テーブルが作成された後にテーブルに挿入される「デフォルト」を定義するためのより良い方法はありますか?おそらく静的クラスの代わりにXMLを介して?

注:実行時に作成された他の値を使用してこれらのフィールドを実際に挿入しているため、外部DBをコピーすることはできません(上記のコードは、実際のコードを単純化したものです)。

ベンダフ

それがであるので、この答えもSQLiteAssetHelperライブラリーは、このタスクは、本当に簡単になります。

Gradle依存関係として追加するのは簡単です(ただし、JarはAnt / Eclipseでも利用できます)。ドキュメントと一緒に、https
//github.com/jgilfelt/android-sqlite-asset-helperにあります。

ドキュメントで説明されているように:

  1. モジュールのgradleビルドファイルに依存関係を追加します。

    dependencies {
        compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    }
    
  2. データベースを、というサブディレクトリのアセットディレクトリにコピーしますassets/databases例えば:
    assets/databases/my_database.db

    (オプションで、データベースをなどのzipファイルに圧縮できますassets/databases/my_database.zip。APKはすでに全体として圧縮されているため、これは必要ありません。)

  3. 次に例を示します。

    public class MyDatabase extends SQLiteAssetHelper {
    
        private static final String DATABASE_NAME = "my_database.db";
        private static final int DATABASE_VERSION = 1;
    
        public MyDatabase(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    }
    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルをデータベースにロードするためのリソース効率の良い方法はありますか?

分類Dev

ファイルをデータベースにロードするためのリソース効率の良い方法はありますか?

分類Dev

アスタリスクを使用して作成された「文字」を印刷するプログラムを作成しました。コードがたくさんあります。これを行うためのより良い方法はありますか?

分類Dev

メニュークリックイベントを対応するコードにマップするためのより良い方法はありますか

分類Dev

sqliteデータベースを迅速にクエリするためのより良いアプローチ

分類Dev

ビットストリームを使用してファイル形式をデコードするためのより良い方法はありますか?

分類Dev

以下のような新しい関数を作成せずに、サブリストを持つタプルのアイテムをマージするためのより良い方法はありますか?

分類Dev

データフレームにインデックスを付けるためのより良い方法はありますか?

分類Dev

列名ではなくインデックスでデータベースを更新するためのより良い方法はありますか?

分類Dev

グリッドやラップパネルよりも、フォームにラベルと値のペアをレイアウトするためのより良い方法はありますか?

分類Dev

pandasデータフレームの列名を操作するためのより良い方法はありますか?

分類Dev

アンカーデータベースモデリング-履歴を保存し、レコードのロールバックを許可するためのより良いものはありますか?

分類Dev

データベースエントリをテキストボックスに表示するためのより良いまたはより効率的な方法はありますか?

分類Dev

2つのグローバルセカンダリインデックス(GSI)を使用するよりも、このアクセスパターンをモデル化するためのより良い方法はありますか?

分類Dev

フレックスディスプレイのアイテム間に同じギャップスペースを作成するためのより良い方法はありますか?

分類Dev

セキュリティグループ内のIPを個別にホワイトリストに登録するよりも、WPFアプリがAWS RDSに接続できるようにするためのより良い方法はありますか?

分類Dev

別のリストに存在するリストからアイテムを削除するためのより良い方法はありますか?

分類Dev

角度のあるデータベースにデータを挿入するためのより良い方法

分類Dev

Ubuntuには、ターミナルコマンド「./」よりもプログラムを実行するための最良の方法がありますか?

分類Dev

タッチアンドエコーを使用する以外に、bashでファイルを作成するためのより良い方法はありますか?

分類Dev

Pythonのアイテム間の関係を見つけるために2つのリストを繰り返すより良い方法はありますか?

分類Dev

これよりも複数のアプリのDjango静的ディレクトリをロードするためのより良い方法はありますか?ありがとうございました

分類Dev

各アイテムをループする以外に、特定の文字で始まるアイテムを見つけるためのより良いアプローチはありますか?

分類Dev

非同期データを処理するためのより良い、より短い方法はありますか?

分類Dev

データを分割するよりも、Rで多色線をプロットするためのより良い方法はありますか?

分類Dev

ステートフルアロケーターオブジェクトへの参照を格納するラッパーアロケーターを作成するよりも、これを行うためのより良い方法はありますか?

分類Dev

プリミティブデータ型を文字列に変換するためのより良いアプローチは何ですか

分類Dev

Androidアプリをより安全にする方法。現在、共有設定でデータを保存するためにアルゴリズムを使用しています。ユーザーのセキュリティは問題ありませんか?

分類Dev

私のSQLデータベースにJavaScriptプロンプトの回答を送信したいのですが、これは可能ですか、それともこれを行うためのより良い方法がありますか?

Related 関連記事

  1. 1

    ファイルをデータベースにロードするためのリソース効率の良い方法はありますか?

  2. 2

    ファイルをデータベースにロードするためのリソース効率の良い方法はありますか?

  3. 3

    アスタリスクを使用して作成された「文字」を印刷するプログラムを作成しました。コードがたくさんあります。これを行うためのより良い方法はありますか?

  4. 4

    メニュークリックイベントを対応するコードにマップするためのより良い方法はありますか

  5. 5

    sqliteデータベースを迅速にクエリするためのより良いアプローチ

  6. 6

    ビットストリームを使用してファイル形式をデコードするためのより良い方法はありますか?

  7. 7

    以下のような新しい関数を作成せずに、サブリストを持つタプルのアイテムをマージするためのより良い方法はありますか?

  8. 8

    データフレームにインデックスを付けるためのより良い方法はありますか?

  9. 9

    列名ではなくインデックスでデータベースを更新するためのより良い方法はありますか?

  10. 10

    グリッドやラップパネルよりも、フォームにラベルと値のペアをレイアウトするためのより良い方法はありますか?

  11. 11

    pandasデータフレームの列名を操作するためのより良い方法はありますか?

  12. 12

    アンカーデータベースモデリング-履歴を保存し、レコードのロールバックを許可するためのより良いものはありますか?

  13. 13

    データベースエントリをテキストボックスに表示するためのより良いまたはより効率的な方法はありますか?

  14. 14

    2つのグローバルセカンダリインデックス(GSI)を使用するよりも、このアクセスパターンをモデル化するためのより良い方法はありますか?

  15. 15

    フレックスディスプレイのアイテム間に同じギャップスペースを作成するためのより良い方法はありますか?

  16. 16

    セキュリティグループ内のIPを個別にホワイトリストに登録するよりも、WPFアプリがAWS RDSに接続できるようにするためのより良い方法はありますか?

  17. 17

    別のリストに存在するリストからアイテムを削除するためのより良い方法はありますか?

  18. 18

    角度のあるデータベースにデータを挿入するためのより良い方法

  19. 19

    Ubuntuには、ターミナルコマンド「./」よりもプログラムを実行するための最良の方法がありますか?

  20. 20

    タッチアンドエコーを使用する以外に、bashでファイルを作成するためのより良い方法はありますか?

  21. 21

    Pythonのアイテム間の関係を見つけるために2つのリストを繰り返すより良い方法はありますか?

  22. 22

    これよりも複数のアプリのDjango静的ディレクトリをロードするためのより良い方法はありますか?ありがとうございました

  23. 23

    各アイテムをループする以外に、特定の文字で始まるアイテムを見つけるためのより良いアプローチはありますか?

  24. 24

    非同期データを処理するためのより良い、より短い方法はありますか?

  25. 25

    データを分割するよりも、Rで多色線をプロットするためのより良い方法はありますか?

  26. 26

    ステートフルアロケーターオブジェクトへの参照を格納するラッパーアロケーターを作成するよりも、これを行うためのより良い方法はありますか?

  27. 27

    プリミティブデータ型を文字列に変換するためのより良いアプローチは何ですか

  28. 28

    Androidアプリをより安全にする方法。現在、共有設定でデータを保存するためにアルゴリズムを使用しています。ユーザーのセキュリティは問題ありませんか?

  29. 29

    私のSQLデータベースにJavaScriptプロンプトの回答を送信したいのですが、これは可能ですか、それともこれを行うためのより良い方法がありますか?

ホットタグ

アーカイブ