2014-03-03 48 views
0

如何保存ArrayList < HashMap < String >>在数据库中?将arrayList散列表保存到数据库中

获取NULL值在数据库

这个方法我试过:Saving records into the database from the hashmap in android 但并没有帮助

public void addQuote(Quote q, ArrayList<HashMap<String, String>> put_q_list) 
{ 

    try{ 
    myDataBase=this.getWritableDatabase(); 
    ContentValues values=new ContentValues(); 

    values.put("q_customer_name", q.getCustomer_name()); 
    values.put("q_customer_email", q.getCustomer_email()); 
    values.put("q_b_street", q.getBilling_street()); 
    values.put("q_b_city", q.getBilling_city()); 
    values.put("q_b_state", q.getBilling_state()); 
    values.put("q_b_zipcode", q.getBilling_zipcode()); 
    values.put("q_b_country", q.getBilling_country()); 
    values.put("q_s_street", q.getShipping_street()); 
    values.put("q_s_city", q.getShipping_city()); 
    values.put("q_s_state", q.getShipping_state()); 
    values.put("q_s_zipcode", q.getShipping_zipcode()); 
    values.put("q_s_country", q.getShipping_country()); 
    values.put("q_day", q.getDay()); 
    values.put("q_month", q.getMonth()); 
    values.put("q_year", q.getYear()); 
    values.put("q_total", q.getTotal()); 
    values.put("q_discount", q.getTotal_discount()); 

    myDataBase.insert("quote",null,values); 

    }catch(Exception e) 
    { 
     Log.e("bderror",e.toString()); 
     e.printStackTrace(); 
    } 

    String selectQuery = "SELECT quote_id FROM quote WHERE q_customer_email=?"; 
    Cursor cursor = myDataBase.rawQuery(selectQuery, new String[] {q.getCustomer_email()}); 
    int i=0; 
    while(cursor.moveToNext()) 
    { 
     i=cursor.getInt(0); 
    } 
    cursor.close(); 
    myDataBase.beginTransaction(); 
    for (int j = 0; j < put_q_list.size(); j++) { 
     HashMap<String, String> map = new HashMap<String, String>(); 
     map = put_q_list.get(j); 

     //Each value by using this method 
     String item_code = map.get("item_code_final"); 

     ContentValues cv = new ContentValues(); 
     cv.put("quote_id", i); 
     cv.put("q_item_code", item_code); 
     myDataBase.insert("q_item", null, cv); 
    } 
    myDataBase.setTransactionSuccessful(); 
    myDataBase.endTransaction(); 
    myDataBase.close(); 
} 

只有的值 “i” 被插入!不是产品代码 请帮忙!!!

+0

什么是你的代码,你用过的?? – MDMalik

+0

编辑问题 – DICER45

+0

现在试试,我想你的'i'变量是问题\ – MDMalik

回答

0

试试这个。它应该工作。

for (int i = 0; i < mapList.size(); i++) { 
    HashMap<String, String> map = new HashMap<String, String>(); 
    map = mapList.get(i); 

    ContentValues cv = new ContentValues(); 
    cv.put("quote_id", i); 
    cv.put("q_item_code", map.get("item_code_final")); 
    cv.put("q_item_desc", map.get("desc_final")); 
    cv.put("q_item_price", map.get("item_price_final")); 
    cv.put("q_item_qty", map.get("item_qty_final")); 
    cv.put("q_item_tax", map.get("item_tax_final")); 
    cv.put("q_item_discount", map.get("item_discount_final")); 
    db.insert("tablename", null, cv); 
} 
db.close(); 
+0

仍然值为空 – DICER45

+0

@ user3319217做的事情,而不是使用map.get(“...”);直接到数据库,首先把它放在一个字符串Log.i上,这样你就知道你是否得到了这个值。然后插入它。它更像是知道错误究竟在哪里 – MDMalik

0

您应该首先声明一个数据库实例来处理和开始事务。如下

SQLiteDatabase db = mDbHelper.getDatabase(); 
db.beginTransaction(); 

然后执行循环

for(HashMap<String, String> map : mylist){ 
ContentValues cv = new ContentValues(); 
cv.put(FILE_NAME, map.get(FILE_NAME)); 
cv.put(DESC, map.get(DESC)); 
cv.put(UPLOADED_BY, map.get(DATE_UPLOADED)); 
cv.put(ACTION, map.get(FILE_NAME)); 
cv.put(ID, map.get(ID)); 
cv.put(FILE_URI, map.get(FILE_URI)); 
db.insert("tablename", null, cv); 
} 

然后关闭cursor

db.setTransactionSuccessful(); 
db.endTransaction(); 
db.close(); 

那是你的链接清楚公认的答案

+0

我已经把代码 没有得到一个错误,但获得数据库中的空值 – DICER45