IN条件的SelectParameters - 传递参数

时间:2013-11-03 21:42:07

标签: c# asp.net sql-server

我的.aspx文件

中有以下内容
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:KrySQL %>" OnSelecting="DataSourceSelecting"
       SelectCommand="Select ID, RoomNum from [dbo].[MBiology] WHERE LocId IN @LocId" >
    <SelectParameters>
       <asp:Parameter Name="LocId" />
    </SelectParameters>        
</asp:SqlDataSource>

我的目标是传递逗号分隔列表或@LocId

的一个值

在我的代码中,我有以下内容:

SqlDataSource1.SelectParameters["LocID"].DefaultValue = "(" + valint.ToString() + ")";

我认为这应该有效,因为我有括号和所有。

我收到以下错误消息:

  

'@LocId'附近的语法不正确

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能这样做:.NET不允许你在一个SQL参数中传递整个列表。

有两种方法可以实现您的需求:

  • 动态生成IN列表成员的个别参数,或
  • 使用table-valued parameters(需要能够更改数据库架构以添加类型)。