0

我创建了一个list view带有checkbox显示的sale invocies. 当用户选择复选框时,我将sale_id所选发票添加到ArrayList<String>.

现在我想在这个ArrayList<String>inquery()方法中使用数据SQLiteDatabase。我想使用sale idsin获取发票详细信息ArrayList。的大小ArrayList不是静态的。

我如何使用 in 中ArrayListquery()方法构建查询SQLiteDatabase

4

4 回答 4

2

假设 ArrayList 包含所有选中的项目,通过循环对其进行迭代并创建 where 子句。有了这个 where 子句,我们可以在 SQLiteDatabase 上触发一个命令。代码如下所示!

ArrayList<String> checkedItems = ...//使用列表中的选中项目加载它

//依次通过
String clause = ""; for (int i = 0; i < checkedItems.size(); i++) {

       String sales_id = checkedItems.get(i); 
        if(i == 0)
        clause += "SALES_ID = '" + sales_id "'";
        else
        clause += " || SALES_ID = '" + sales_id "'";

}

// 运行数据库sqlite查询命令

Cursor cursor = database.rawQuery("SELECT * FROM SALES_TABLE  WHERE clause");
于 2012-12-24T07:07:32.000 回答
0
SQLiteDatabase mdb = DatabaseHelper.getInstance(context).getWritableDatabase();//SQLiteOpenHelper

/**
         * Get invoice details information
         * @param sale_id
         * @return
         */
        public Cursor getInvoiceDetails(int sale_id){
            String invoiceQuery= "SELECT " +
                                      " invoice._id," +
                                      " invoice.date," +
                                      " invoice.details " +
                                      " FROM " +
                                  TABLE_INVOICE                               
                                      " WHERE " +
                                      " invoice._id = " + sale_id;

            Log.d(TAG, "getInvoiceInfo: " + invoiceQuery);
            return mdb.rawQuery(invoiceQuery,null);
        }
于 2012-12-24T07:01:04.743 回答
0

您可以使用以下查询:

public Cursor get_details (int id) {
        c = this.getReadableDatabase().rawQuery("SELECT * FROM Table where id = "+id,null);
        return c;
        }

你只在监听器中写下你的复选框

ArrayList.add(id)

当您想要显示详细信息时,您可以获得 id 作为

for( i=0 ; i<ArrayList.size();i++){
    int id=ArrayList.get(0)
     get_details(id);
}
于 2012-12-24T07:01:26.097 回答
0

我找到了我的问题的答案。修改后stack_ved的代码如下。

String clause = ""; 

for (int i = 0; i < checkedItems.size(); i++) {

           String sales_id = checkedItems.get(i); 
            if(i == 0)
            clause += "SALES_ID = '" + sales_id "'";
            else
            clause += " OR SALES_ID = '" + sales_id "'";
    }

替换||OR

Cursor c = database.query("TABLE_NAME", COLUMN_NAMES, clause, null,
                null, null, null);
于 2012-12-24T07:55:01.813 回答