如果与ASP.NET一起使用,则SQL的子句不起作用 [英] In clause of SQL doesnot work if used with ASP.NET

查看:67
本文介绍了如果与ASP.NET一起使用,则SQL的子句不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,

我在SQLdatasource中的where条件中使用IN子句,该条件被分配给gridview。我使用HiddenField为IN子句提供值。如果它有单个值然后它工作正常但如果它有多个值然后结果是空的



我尝试过:



服务器端vb 
< pre> HiddenField1.Value =864180030063601,111111111111111





Asp sqldata来源

< ; asp:SqlDataSource ID =SqlDataSource1runat =server
ConnectionString =<%$ ConnectionStrings:xxxxxxxxx%>
SelectCommand =SELECT * FROM [table] WHERE([column] in(@column))>
< SelectParameters>
< asp:ControlParameter ControlID =HiddenField1Name =columnPropertyName =ValueType =String/>

< / SelectParameters>
< / asp:SqlDataSource>

解决方案

ConnectionStrings:xxxxxxxxx%>
SelectCommand =SELECT * FROM [table] WHERE([column] in(@column))>
< SelectParameters>
< asp:ControlParameter ControlID =HiddenField1Name =columnPropertyName =Value Type =String/>

< / SelectParameters>
< / asp:SqlDataSource>


IN子句是SQL中的一种特殊情况:您不能将它们作为参数传递,因为IN在SQL命令解析序列中过早地转换为内部表以进行参数替换。



请参阅:使用逗号分隔值SQL IN子句中的参数字符串 [ ^ ]


查看此帖子 SqlDataSource - IN()子句的参数| ASP.NET论坛 [ ^ ]

hello,
I am using IN clause in where condition in SQLdatasource which is assigned to gridview. I am providing values for IN clause using HiddenField. If it has single values then its works fine but if it has multi value then result is empty

What I have tried:

server side vb
<pre> HiddenField1.Value = "864180030063601,111111111111111"



Asp sqldata source

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:xxxxxxxxx %>" 
                    SelectCommand="SELECT * FROM [table] WHERE ([column] in (@column))">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="HiddenField1" Name="column" PropertyName="Value" Type="String" />
                      
                    </SelectParameters>
                </asp:SqlDataSource>

解决方案

ConnectionStrings:xxxxxxxxx %>" SelectCommand="SELECT * FROM [table] WHERE ([column] in (@column))"> <SelectParameters> <asp:ControlParameter ControlID="HiddenField1" Name="column" PropertyName="Value" Type="String" /> </SelectParameters> </asp:SqlDataSource>


IN clauses are a special case in SQL: you can't pass them as a parameter, as the IN is converted to an internal table too early in the SQL command parsing sequence for parameter substitution.

See here: Using comma separated value parameter strings in SQL IN clauses[^]


check this post SqlDataSource - parameter for IN() clause | The ASP.NET Forums[^]


这篇关于如果与ASP.NET一起使用,则SQL的子句不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆