0

我的.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' 附近的语法不正确

4

1 回答 1

1

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

有两种实现您需要的方法:

  • 动态地为列表的成员生成单独的参数IN,或者
  • 使用表值参数(需要能够更改数据库模式以添加类型)。
于 2013-11-03T21:47:21.303 回答