【发布时间】:2008-11-01 08:14:04
【问题描述】:
我有一个名为 call 的数据库表,其中包含 call_time、location、emergency_type 列,并且紧急情况分为三种类型:护理人员、警察和消防员。在 windows 窗体中,我创建了 CheckBoxes 'paramedics'、'police'、'firefighters',我想检索所有符合用户选择的表列。
我创建了一个函数:
public static DataTable GetHistory(DateTime from, DateTime to, bool paramedics, bool police, bool firefighters)
{
string select =
"SELECT call_time, location, emergency_type where call_time between @from AND @to AND";
if(paramedics)
{
select += " emergency_type = 'paramedics' ";
}
if(paramedics && police)
{
select +=" emergency_type = 'paramedics' OR emergency_type = 'police';
}
...
}
然而,这段代码看起来很脏,因为如果有 30 种紧急情况,就会有 30 种!组合,我会在写所有 if 语句之前变老。
如果您能分享您在有很多选项可以选择的情况下检索满足所选搜索条件的数据的做法,我将不胜感激。
谢谢!
【问题讨论】:
-
顺便说一句,如果语句一个接一个地运行,所以如果护理人员和警察都是真的,那么你最终会得到一个字符串 "...emergency_type = 'paramedics' Emergency_type = 'paramedics' OR Emergency_type = '警察”
-
这只是一个方法示例,而不是工作版本。