我创建了list view
checkbox
来显示sale invocies
。当用户选择复选框时,我将sale_id
个选定的发票添加到ArrayList<String>
。
现在,我想在ArrayList<String>
中的query()
方法中使用此SQLiteDatabase
中的数据。我希望使用sale ids
中的ArrayList
获取发票详细信息。 ArrayList
的大小不是静态的。
如何使用ArrayList
中的query()
方法SQLiteDatabase
中的数据构建查询?
答案 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);