string.Format("select sum(amt)as amt from tb where order_no in ({0})", orders);
这里怎么写才对,orders是用逗号分隔的多个订单号字符串。
一个参数对应一个字段,一个字段只能存放一个值,类似in里面这种放多个值的不能用参数化查询。
要用的话,将in转换成or的形式才可以用 order_no=@p1 or order_no =@p2 ...
功能实现上说,你这个可以了啊
string.Format("select sum(amt)as amt from tb where order_no in ({0})", “1,2,3,4,5,6,7,8,9”);
这里得注意 开始或者结束的 ”,“
注入攻击方面就。。
首先,为了防止注入攻击,不推荐楼主这样来拼接sql语句.
建议:
string sqlStr="select sum(amt) as amt from tb where order_no in (@orders)";
SqlParameters[] pms=new SqlParameters[]{new SqlParameters("@orders",orders)};
希望能帮到你~!
能解释一下第二句是什么意思么?
你的 string.Format("select sum(amt)as amt from tb where order_no in ({0})", orders); 里面的 sum(amt) 的 amt 的怎么替换掉的?
其实攻击是可以避免的,自己过滤一下传入的参数就行了。