【问题标题】:SQLDataSource Parameter not workingSQLDataSource 参数不起作用
【发布时间】:2015-08-20 08:06:37
【问题描述】:

我有以下 SQLDataSource:

<asp:SqlDataSource runat="server" ID="MySqlDataSource" ConnectionString='<%$ ConnectionStrings:RmaReportingConnectionString %>' 
     SelectCommand="SELECT DISTINCT [Team] FROM [Locations] WHERE ([Team] IN (@Teams))">
        <SelectParameters>
             <asp:Parameter Name="Teams" Type="String" />
        </SelectParameters>
 </asp:SqlDataSource>

在后面的代码中这样调用它:

MySqlDataSource.SelectParameters["Teams"].DefaultValue = "'Team 1','Team 2'";
MySqlDataSource.DataBind();

问题是我没有得到任何结果,我感觉这是由于语法,因为如果我在没有参数的情况下运行原始 SQL,它可以正常工作。

【问题讨论】:

  • 我很确定在IN 子句中使用参数是不可能的。我没有回答,因为我不是 100% 肯定的,但这可以解释为什么它可以作为原始 SQL 工作
  • 可能,由于 '' 字符。如果不是,那还有什么可以替代的?

标签: sql asp.net sqldatasource


【解决方案1】:

这可能是因为您的字符串中有转义字符 (')。

尝试在变量字符串前添加@符号:

MySqlDataSource.SelectParameters["Teams"].DefaultValue = @"'Team 1','Team 2'";

【讨论】:

    【解决方案2】:
    SELECT DISTINCT [Team] FROM [Locations] WHERE ([Team] IN (@Teams))
    

    这只会返回 1 个结果。您需要提及所有条件,例如

     SELECT DISTINCT [Team] FROM [Locations] WHERE ([Team] IN (@Team1,@Team2,@Team3))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多