Android:将Arraylist值插入数据库

Android:将Arraylist值插入数据库,android,database,arraylist,Android,Database,Arraylist,大家好,有人能告诉我如何将arraylist值插入数据库的正确方向吗。我有两个arraylist,如下所示: ArrayList<HashMap<String, String>> achieve_val = new ArrayList<HashMap<String, String>>(); ArrayList<HashMap<String, String>> achieve_vol = new ArrayLi

大家好,有人能告诉我如何将arraylist值插入数据库的正确方向吗。我有两个arraylist,如下所示:

    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);
现在,在我的数据库adpater中,我不确定如何访问这些vlaues并插入数据库,请执行以下操作:

    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;}}
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);
        }
}
public void topinchartsRecord(ProductCategory ProductCategory){
for(ArrayList映射:实现值){
ContentValues cv=新的ContentValues();
cv.put(文件名,map.get(文件名));
db.插入(“表名”,空,cv);
}
}

试试这个方法,希望对你有所帮助

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();
        }
    }

将Hashmap的ArrayList传递给此方法,表名将插入数据库。

您好,我需要将your方法放入我的topincharts方法中吗?我如何调用你的方法嗨,我在我的表中没有看到任何数据,它没有插入,我是否需要更改此字符串columnName=it.next();con.put(columnName,row.get(columnName))???或者……除了这个09-25 06:54:37.351:E/SQLiteLog(21272):(1)接近“-”:语法错误,没有其他错误,但应用程序正在运行,将这个日期字段数据类型改为“TEXT”,而不是“DATE”,它现在是文本……实际上它必须读取并插入这个值(“酵母-营养体/细胞壁”:“-”,等等)。当我在日志中打印时,我得到的值为“-”,但itz没有进入数据库。
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) {
        }

    }