-1

我需要像这样从 Sqlite DB 表中获取记录结果

句法 :

**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;
}
4

1 回答 1

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

希望这可以帮助...

于 2013-09-11T12:28:36.580 回答