使用Where in List条件获取Sqlite数据集

时间:2013-09-11 12:02:08

标签: java android sqlite collections

我需要从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;
}

1 个答案:

答案 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)+")";

希望这会有所帮助......

相关问题