我有一个商店编程,在复选框组中选中所选部门。当我传递一个值时,它可以工作,但是当我通过超过2个部门时,它不起作用
在商店前卫
CREATE PROCEDURE [dbo].[REPORT]
@dept nvarchar(max)=null
AS
set @dept=left(@dept,len(@dept)-1)
select * from department where deptid in(@dept)
在我的代码背后
string dept = "";
foreach (ListItem item in CheckBoxList1.Items)
{
if(item.Selected)
{
dept+="'"+item.Value.ToString()+"',";
}
}
...
...
...
cmd.Parameters.AddWithValue("@dept", dept);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
gvdata.datasource=dt;
gvdata.bind();
}
答案 0 :(得分:0)
一种方法是将查询转换为“动态”sql(执行sql字符串);这应该有效:
SET @dept=left(@dept,len(@dept)-1)
exec('select * from department where deptid in(' + @dept + ')');
在执行动态SQL时要注意注入攻击。