0

こんにちは、配列リストの値をデータベースに挿入する方法を教えてください。私は以下のように2つの配列リストを持っています:

    ArrayList<HashMap<String, String>> achieve_val = new ArrayList<HashMap<String, String>>();
    ArrayList<HashMap<String, String>> achieve_vol = new ArrayList<HashMap<String, String>>();

HashMap<String, String> Achiev_Vol_map = new HashMap<String, String>();
     Achiev_Vol_map.put(PRODUCT_CAKE, Achieve_Vcake);
     Achiev_Vol_map.put(PRODUCT_YEASTEXTRACT, Achieve_Vyeastextract);
     .
     .
     .
     achieve_vol.add(Achiev_Vol_map);

以下のように、この値の POJO クラスを作成しました。

    public class ProductCategory {
        ArrayList<HashMap<String, String>> achieve_val,achieve_vol ;

         public ArrayList<HashMap<String, String>> getAchieve_val() {
            return achieve_val;}
        public void setAchieve_val(ArrayList<HashMap<String, String>> achieve_val) {
            this.achieve_val = achieve_val;}

        public ArrayList<HashMap<String, String>> getAchieve_vol() {
            return achieve_vol;}
        public void setAchieve_vol(ArrayList<HashMap<String, String>> achieve_vol) {
            this.achieve_vol = achieve_vol;}

/**my constructor**/
        public ProductCategory(ArrayList<HashMap<String, String>> achieve_val,
                ArrayList<HashMap<String, String>> achieve_vol) {
            super();
            this.achieve_val = achieve_val;
           this.achieve_vol = achieve_vol;}}

以下のように、この値をデータベースアダプターに渡しています

dbHelper.open();
dbHelper.topinchartsRecord(new ProductCategory(achieve_val,achieve_vol));

現在、私のデータベース アダプターでは、これらの vlaues にアクセスしてデータベースに挿入する方法がわかりません。次のように実行します。

public void topinchartsRecord(ProductCategory productCategory) {

    for(ArrayList<HashMap<String, String>> map : achieve_val){
           ContentValues cv = new ContentValues();
           cv.put(FILE_NAME, map.get(FILE_NAME));

           db.insert("tablename", null, cv);
        }
}
4

1 に答える 1

0

この方法を試してみてください

public void insertRecords(ArrayList<HashMap<String, String>> data,
            String tableName) {
        if (data != null && data.size() > 0) {

            ContentValues con = new ContentValues();
            db.beginTransaction();

            for (int i = 0; i < data.size(); i++) {
                con.clear();
                HashMap<String, String> row = data.get(i);
                Iterator<String> it = row.keySet().iterator();

                while (it.hasNext()) {

                    String columnName = it.next();
                    con.put(columnName, row.get(columnName));
                }

                db.insertWithOnConflict(tableName, null, con,
                        SQLiteDatabase.CONFLICT_IGNORE);

            }
            db.setTransactionSuccessful();
            db.endTransaction();
        }
    }

あなたの方法から

public void topinchartsRecord(ProductCategory productCategory) {

        try{
            insertRecords(productCategory.getAchieve_val(),"tableNameForThisValues");
            insertRecords(productCategory.getAchieve_vol(),"tableNameForThisValues");
        }catch (Exception e) {
        }

    }

Hashmap の ArrayList をこのメソッドに渡すと、テーブルの名前がデータベースに挿入されます。

于 2013-09-25T06:14:29.180 に答える