概述
工作记录
-
工作中遇到这样一个需求:
某个界面上有三个复选框,它们都是查询条件,它们三个分别是生产人员对应值:0,辅助人员对应值:1,特殊工号对应值:-1,这个时候需要使用SQL IN 动态拼接参数,由于经验少,我写的非常复杂, 手动判断了参数是一位还是三位,一位的时候需要去掉尾巴上的",",如果是三位,最后一位是不需要添加上","。 -
我的实现如下:
//我的实现:
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() + ")");
- 老码农教我的写法:
//老员工教我的写法
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())) + ")");
- 码农教我的第二种写法,反向操作,先加再去掉。
//老员工教的第二种写法
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参数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复