工作记录
-
工作中遇到这样一个需求:
某个界面上有三个复选框,它们都是查询条件,它们三个分别是生产人员对应值:0,辅助人员对应值:1,特殊工号对应值:-1,这个时候需要使用SQL IN 动态拼接参数,由于经验少,我写的非常复杂, 手动判断了参数是一位还是三位,一位的时候需要去掉尾巴上的",",如果是三位,最后一位是不需要添加上","。 -
我的实现如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42//我的实现: if (chkFzry.Checked || chkScry.Checked || chkTsgh.Checked) { string[] str = new string[] { }; List<string> list = str.ToList(); if (chkScry.Checked) { list.Add("0"); } if (chkFzry.Checked) { list.Add("1"); } if (chkTsgh.Checked) { list.Add("-1"); } string strsql = ""; foreach (string i in list) { if (list.Count > 1) { if (list.Last() == i) { strsql += i; break; } else { strsql += i + ","; continue; } } else if (list.Count == 1) { strsql = i; break; } } _sql.AppendLine(" and f_ryfl in (" + strsql.ToStr() + ")");
- 老码农教我的写法:
复制代码
1
2
3
4
5
6
7
8
9//老员工教我的写法 List<string> _lst = new List<string>(); if (chkScry.Checked) _lst.Add("0"); if (chkFzry.Checked) _lst.Add("1"); if (chkTsgh.Checked) _lst.Add("-1"); if (_lst.Count > 0) _sql.AppendLine(" and f_ryfl in (" + (string.Join(",", _lst.ToArray())) + ")");
- 码农教我的第二种写法,反向操作,先加再去掉。
复制代码
1
2
3
4
5
6
7
8
9//老员工教的第二种写法 string _tmp = ""; if (chkScry.Checked) _tmp = _tmp + ",0"; if (chkFzry.Checked) _tmp = _tmp + ",1"; if (chkTsgh.Checked) _tmp = _tmp + ",-1"; if (_tmp != "") _sql.AppendLine(" and f_ryfl in (" + _tmp.Trim(',') + ")");
最后
以上就是从容煎蛋最近收集整理的关于复选框作为条件动态拼接SQL参数的全部内容,更多相关复选框作为条件动态拼接SQL参数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复