我可以提供一些参数来搜索表中的数据:
- DateFrom
- DateTo
- Name
- TypeId
我有一个我需要改进的代码。在应用程序代码中,我有一个函数可以获取所有这些参数,并根据我使用IF语句提供的参数构建不同的查询。
我想知道有更好的方法吗?
只使用参数进行一次查询,如果没有参数则忽略它
所以我不必这样做:
select...where DateFrom = 'someDate'
select...where DateFrom = 'someDate' and DateTo = 'someDate'
select...where DateFrom = 'someDate' and DateTo = 'someDate' and Name = 'someName'
etc.
答案 0 :(得分:3)
尝试非常简单的方法,假设您的参数名称为@ Begin,@ End,@ Name:
select...
where
(@Begin IS NULL OR DateFrom = @Begin)
and (@End is NULL OR DateTo = @End)
and (@Name is NULL OR Name = @Name)
...
然后,如果您将参数的值传递为NULL - 那么查询将跳过它
答案 1 :(得分:0)
使用通用的util类来控制它
getSqlParams(String dateFrom)
getSqlParams(String dataFrom,DateTo)
等等。也许可以帮助你。因为不同的参数意味着不同的维度 使用If真是太难看了。 :(