使用query()从SQLite返回所有值?

时间:2014-03-27 15:11:48

标签: android sqlite android-contentprovider

我有一个包含3列(DescriptionPriorityDate)的数据库,所有这些列都可供用户搜索。我正在尝试使用以下代码(使用null代替selectionselcArgs)来实现此目的但是没有得到任何结果?

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)

如果用户没有传递任何值,我想返回数据库中的所有数据。类似地,如果用户没有在其中一个属性中输入值,我实际上会喜欢忽略该值。

我希望这个解释得很好!

提前谢谢!

1 个答案:

答案 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);