SQLiteDatabase.query()的用法

时间:2012-12-24 06:42:40

标签: android sqlite

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

现在,我想在ArrayList<String>中的query()方法中使用此SQLiteDatabase中的数据。我希望使用sale ids中的ArrayList获取发票详细信息。 ArrayList的大小不是静态的。

如何使用ArrayList中的query()方法SQLiteDatabase中的数据构建查询?

4 个答案:

答案 0 :(得分: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");

答案 1 :(得分: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);
        }

答案 2 :(得分: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);
}

答案 3 :(得分: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);