【问题标题】:Android: Inserting Arraylist values into databaseAndroid:将 Arraylist 值插入数据库
【发布时间】:2013-09-25 06:05:58
【问题描述】:

嗨,有人能指出正确的方向吗?如何将 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);

我为此值创建了一个 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));

现在在我的数据库适配器中,我不确定如何访问这些变量并插入数据库,如下所示:

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

【问题讨论】:

    标签: android database arraylist


    【解决方案1】:

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

    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传递给该方法,表名将插入数据库。

    【讨论】:

    • 您好,我需要将您的方法放入我的 topincharts 方法中吗?我怎么称呼你的方法
    • 嗨,我在我的表中没有看到任何数据,它没有插入,我需要更改这个 String columnName = it.next(); con.put(columnName, row.get(columnName)); ???或....
    • 除了这个 09-25 06:54:37.351: E/SQLiteLog(21272): (1) 在“-”附近:语法错误,没有其他错误,但应用程序正在运行
    • 将此日期字段数据类型设为“TEXT”而不是“DATE”
    • 它现在是 TEXT ......实际上它必须读取并插入这个值(“酵母 - Nutiferm / 细胞壁”:“ - ”,)。当我在日志中打印时,我得到的值为'-',但它没有进入数据库。
    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多