【发布时间】:2013-03-08 14:19:12
【问题描述】:
在 DB2 UDB 9.7.5 中使用 Studio 2010 C#
我有一个从带有 WHERE IN 子句的 DataSource 填充的网格视图,如下所示:
<asp:SqlDataSource ID="LUWAccts" runat="server" onSelecting="gvGrid01_Selecting"
ConnectionString="<%$ ConnectionStrings:LUWHAConnect %>"
ProviderName="<%$ ConnectionStrings:LUWHAConnect.ProviderName %>"
SelectCommand="SELECT mycolumns FROM mytables WHERE GROUP_NAME IN ? ">
<SelectParameters>
<asp:Parameter Name="grpList" Type="String" />
</SelectParameters>
硬编码 WHERE 子句可以正常工作 (即 WHERE GROUP_NAME IN ('GROUP1','GROUP2','GROUP3')
但我正在尝试在后面的代码中使用我的数据源的 onSelecting 事件来构建组列表,如下所示:
protected void gvGrid01_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
string gpList = Get_SVCACCT_Auth_Groups(Session["ThisUser"].ToString());
//This routine returns the string "('GROUP1','GROUP2','GROUP3')"
}
当我显示 grpList 字符串时,我确实有 ('GROUP1','GROUP2','GROUP3')。
但我没有显示任何数据。我已经搜索并尝试了各种技术来更改 SELECT 语句、使用 e.Command.Parameters.Add 修改参数列表、使用 ControlParemers 等。
我还阅读了一篇关于 WHERE IN 子句如何无法处理逗号分隔列表参数的文章,但 IN 关键字可以查询表。
我的 gpList 不是从另一个 SELECT 语句构建的 - 但我仍然尝试了一些这样的示例,但没有运气。作为一个新手 - 我似乎在围绕解决方案跳舞。
如果我错过了有助于回答此问题的帖子,请告诉我。任何帮助将不胜感激。
【问题讨论】:
-
您尝试过在 C#/SQL Server 中运行 Select 查询吗?如果是这样,您是将值作为双引号值还是单引号值传递..?您可以将其作为字符串 {0} 参数传递,如“SELECT mycolumns FROM mytables WHERE GROUP_NAME IN {0}”在后面的代码中传递参数使用 stringFormat() 也许
-
将 where 子句更改为 WHERE GROUP_NAME IN {0} 会给我一个 Invalid SQL Syntax 错误。我的
需要改变什么? -
选择参数它们当前设置在什么位置..?
-
在 onSelecting 事件中,字符串 grpList 是 "'GROUP1','GROUP2','GROUP3'"(逗号分隔的组带单引号的名称)。我使用 e.Command.Parameters["@grpList"].Value = mygrouplist; 将值传递回我的数据源 -
那么这应该可以工作,因为你已经有了值
标签: c# .net visual-studio-2010 sqldatasource where-in