android内容提供程序查询生成器

时间:2014-03-08 17:52:46

标签: android sqlite android-contentprovider

我有变量,每个变量都有可能是空的。我用这些来创建我的论点:

String[] arguments = {argClassOfExercise, argPeriodOfPeriodisation, argAgeGroup, argPrDistanceGroup, argVo2Max};

并定义我使用的WHERE CLAUSE

String selection = "catalog.ex_class = ? AND catalog.period = ? AND catalog.age_group = ? AND catalog.pr_comp_grouping = ? AND catalog.vo2max = ?";

将它全部放在我的cursorloader中:

CursorLoader cursorLoader = new CursorLoader(getActivity(), CatalogProvider.CONTENT_URI_TRANSLATION, projection, selection, arguments, null);

现在这一切都可以正常工作,直到其中一个变量为空。由于没有数据库值等于和空字符串。如果该特定变量为空,是否有可能排除WHERE CLAUSE?

我知道你可以写一堆IF语句,但这会导致我写出其中的11条,而且我认为这并不是真的有效。

欢迎任何想法

1 个答案:

答案 0 :(得分:0)

可以使用像(ex_class = ?1 OR ?1 = '') AND ...这样的SQL表达式,但效率非常低。

您应该动态构造SQL选择字符串和参数数组,并且只留下空格字符串的任何条目。