2012-01-23 19 views
0

誰かがsqliteに行を挿入するより効率的な方法を知っていますか? スプリット機能が心配です。 xmlまたはjsonに値を格納する必要がありますか? 提案がありましたら、お知らせしたいと思います。sqliteの効率的な挿入android

値の私の配列が

private static final String[] inShopCategories = 
    {"Babies;5;@drawable/ic_launcher", 
"Fruit/Vegetables;3;@drawable/ic_launcher", 
"Meat/Fisth;2;@drawable/ic_launcher"}; 

で、私のコードは次のとおりです。

public void onCreate(SQLiteDatabase db){ 
     //create table 
     db.execSQL(cShopCateg); 

     //insert default shopping categories with InsertHelper 
     InsertHelper ih = new InsertHelper(db, tShopCateg); 
     final int nameCol = ih.getColumnIndex(KEY_NAME); 
     final int priorityCol = ih.getColumnIndex(KEY_PRIORITY); 
     final int iconCol = ih.getColumnIndex(KEY_ICON); 

     for(int i=-1,l=inShopCategories.length; ++i<l;){ 
      ih.prepareForInsert(); 
      String[] s = inShopCategories[i].split(";"); 
      ih.bind(nameCol, s[0]); 
      ih.bind(priorityCol, s[1]); 
      ih.bind(iconCol, s[2]); 
      ih.execute(); 
     } 

    } 

答えて

3

誰もがsqliteの中で行を挿入するより効率的な方法を知っていますか?

はい。

iは理にかなっているスプリット機能

の心配です。正当な理由でCPUサイクルを無駄にしています。

xmlまたはjsonに値を格納する必要がありますか?

これらは、正当な理由がないためにCPUサイクルを無駄にします。

提案がある場合は、お知らせしたいと思います。

オプション#1:SQLiteAssetHelperのようなものを使用して、あなたのアプリケーションで、既に挿入されたそのデータと、このすべてのコードとプリパッケージデータベースを取り除きます。

オプション#2:String[]を完全なSQL INSERTステートメントにして、それらを実行して、多くの解析と連結を行って同じ終了に到達するのではなく、それらを実行します。

オプション#3:誰かがInsertHelperを使用するために、あなたの頭に銃を指している場合は、あなたの行と列のための二次元配列StringString[][])を持っています。

関連する問題