我需要从Sqlite数据库表中获取记录结果
语法:
**SELECT * FROM TABLE_NAME WHERE ID in (JAVA_LIST)**
如何实现这一点。请帮我解决一下
这是我的代码片段
public ArrayList<SalesReport> getMerchantWiseReport(String epfNo,Date fromDate,Date toDate) {
Map<Date,Integer> map=new HashMap<Date,Integer>();
map =selectedDatesInvoiceIdsMap(fromDate, toDate);
ArrayList<Integer> invoiceIds=null;
ArrayList<SalesReport> salesReportList=new ArrayList<SalesReport>();
invoiceIds=(ArrayList<Integer>) map.values();
String sql="SELECT h.ENTERED_DATE, d.CARD_TYPE, d.DENOMINATION,
d.NO_OF_CARDS, d.LINE_AMOUNT FROM sales_details d,SALES_HEADER h where
h.INVOICE_ID=d.INVOICE_ID AND h.INVOICE_ID in ("+invoiceIds+")";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
do {
SalesReport salesReport=new SalesReport();
salesReport.setDate(cursor.getString(0));
salesReport.setCardType(cursor.getString(1));
salesReport.setDenom(Double.valueOf(cursor.getString(2)));
salesReport.setQty(Integer.valueOf(cursor.getString(3)));
salesReport.setAmount(Double.valueOf(cursor.getString(4)));
salesReportList.add(salesReport);
}while (cursor.moveToNext());
}
return salesReportList;
}
答案 0 :(得分:1)
尝试这样..创建方法..
public String id_data(ArrayList<Integer> data) {
StringBuilder val = new StringBuilder();
for (int i = 0; i < data.size(); i++) {
val.append(String.valueOf(data.get(i)));
if (i < data.size() - 1) {
val.append(",");
}
}
return val.toString();
}
现在您的查询字符串变为..
String sql="SELECT h.ENTERED_DATE, d.CARD_TYPE, d.DENOMINATION,
d.NO_OF_CARDS, d.LINE_AMOUNT FROM sales_details d,SALES_HEADER h where
h.INVOICE_ID=d.INVOICE_ID AND h.INVOICE_ID in ("+id_data(invoiceIds)+")";
希望这会有所帮助......