【问题标题】:Save arrayList Hashmap in database将arrayList Hashmap保存在数据库中
【发布时间】:2014-03-04 01:53:12
【问题描述】:

如何将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”的值被插入!!!不是商品代码 请帮忙!!!

【问题讨论】:

  • 您使用的代码是什么??
  • 现在试试,我认为你的i 变量是问题所在\
  • 不是这样,“i”的值被插入,但数据库中的其余字段为空
  • 调试观察这一行的结果String item_code = map.get("item_code_final");

标签: android


【解决方案1】:

试试这个。它应该工作。

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

【讨论】:

  • 仍然是空值
  • @user3319217 做事情而不是使用 map.get("...");直接到数据库,首先把它放在那个变量的字符串 Log.i 中,这样你就知道你是否得到了这个值。然后插入它。它更像是知道错误到底在哪里
【解决方案2】:

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

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

在您接受的答案中的链接中很清楚

【讨论】:

  • 我已经把那个代码没有收到错误但在数据库中得到空值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2016-05-07
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多