我有一个包含3列(Description
,Priority
和Date
)的数据库,所有这些列都可供用户搜索。我正在尝试使用以下代码(使用null
代替selection
和selcArgs
)来实现此目的但是没有得到任何结果?
String selection = Table.COLUMN_DESCRIPTION + "=? AND " +
Table.COLUMN_PRIORITY + "=? AND " + Table.COLUMN_DATE + "=?";
// description, priority, date picked up from textboxes and DO pass values
String[] selcArgs = new String[] { description, priority, date };
ContentResolver().query(MyContentProvider.CONTENT_URI,null, selection, selcArgs, sortBy)
如果用户没有传递任何值,我想返回数据库中的所有数据。类似地,如果用户没有在其中一个属性中输入值,我实际上会喜欢忽略该值。
我希望这个解释得很好!
提前谢谢!
答案 0 :(得分:0)
为您的选择创建StringBuffer
,为值设置ArrayList
,然后根据需要添加条件和值:
final StringBuffer sb = new StringBuffer();
final ArrayList<String> values = new ArrayList<String>();
if (description != null) {
sb.append(Table.COLUMN_DESCRIPTION).append("=?");
values.add(description);
}
// ...
// check also if you have to add AND
// ...
ContentResolver().query(MyContentProvider.CONTENT_URI, null, sb.toString(), values.toArray(), sortBy);