【发布时间】:2017-07-05 03:35:00
【问题描述】:
我在从 db 获取数据并迭代 arrayList 时遇到问题,例如,我在 sqlite 中插入了两个数据,我想使用循环进行选择。但我只选择了循环中的最后一行数据。任何解决此问题的建议
public void postDataDtl(String DocNo) {
database = new ProductDatabase.ProductDatabaseHelper(activityContext);
try{
String selectQuery = "select * from BarcodeDtl where DocNo='"+DocNo+"'";
SQLiteDatabase db1 = database.getWritableDatabase();
cursor =db1.rawQuery(selectQuery, null);
cursor.moveToFirst();
Barlist = new ArrayList<>();
hashMap = new HashMap<String, String>();
data = new JSONObject();
array = new JSONArray();
while(cursor.isAfterLast()==false) {
branch = cursor.getString(cursor.getColumnIndex("Branch"));
docno = cursor.getString(cursor.getColumnIndex("DocNo"));
time = cursor.getString(cursor.getColumnIndex("Time"));
seqno = cursor.getString(cursor.getColumnIndex("SeqNo"));
barcode = cursor.getString(cursor.getColumnIndex("Barcode"));
qty = cursor.getString(cursor.getColumnIndex("Quantity"));
hashMap.put("branch",branch);
hashMap.put("docno",docno);
hashMap.put("time",time);
hashMap.put("seqno",seqno);
hashMap.put("barcode",barcode);
hashMap.put("qty",qty);
Barlist.add(hashMap);
cursor.moveToNext();
}
//the problem is this for loop getting same result
for(int i=0; i<Barlist.size();i++) {
data.put("Branch", hashMap.get("branch"));
data.put("DocNo", hashMap.get("docno"));
data.put("CTime", hashMap.get("time"));
data.put("Seq", hashMap.get("seq"));
data.put("Barcode", hashMap.get("barcode"));
data.put("Qty", hashMap.get("qty"));
array.put(data);
}
// }
// array.put(data);
}catch (Exception e){
}
【问题讨论】:
-
光标 =db1.rawQuery(selectQuery, null);你在光标中得到了什么?两个数据还是一个?
-
@ZakiPathan 我选择了两个数据
-
和我的 Barlist.size() 也算两个
-
这令人困惑。 for(int i=0; i
-
我的 hashMap 得到了两个数据,但是它得到了最新的数据并且重复了
标签: android json sqlite arraylist hashmap