2013-09-25 3 views
0

Привет, может кто-нибудь указать мне в правильном направлении, как вставлять значения arraylist в базу данных. У меня есть два ArrayList, как показано ниже:Android: Вставка значений 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)); 

Теперь в моей базе данных adpater я не уверен, как получить доступ к этим областям и вставить в базу данных, сделанные примерно так:

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

ответ

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

    } 

Pass ArrayList из Hashmap к этому методу и имя таблицы будет вставлять в базу данных.

+0

Привет, мне нужно положить ваш метод в мой метод topincharts? как я могу назвать ваш метод – teekib

+0

Я редактирую сообщение, просто проверяю и даю знать –

+0

Привет, я не вижу никаких данных в моей таблице, не вставляя их, мне нужно изменить этот столбец StringName = it.next(); con.put (columnName, row.get (columnName)); ??? или .... – teekib

Смежные вопросы