Nitin Surya Ответов: 2

В предложении SQL не работает, если используется с ASP.NET


привет,
Я использую предложение IN в условии where в SQLdatasource, которое назначается gridview. Я предоставляю значения для предложения IN, используя HiddenField. Если он имеет одно значение то он работает нормально но если он имеет несколько значений то результат пуст

Что я уже пробовал:

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


Источник Asp sqldata
<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>

2 Ответов

Рейтинг:
2

OriginalGriff

Предложения IN-это особый случай в SQL: вы не можете передать их в качестве параметра, так как IN преобразуется во внутреннюю таблицу слишком рано в последовательности синтаксического анализа SQL-команд для замены параметров.

Видеть здесь: Использование разделенных запятыми строк параметров значений в предложениях SQL IN[^]


Nitin Surya

Есть ли какой-либо другой способ достичь этого, как вы поняли мое требование

Andy Lanng

Да. Он дал тебе ссылку!

Nitin Surya

я видел его, но как я мог бы использовать его в asp.net код?

Nitin Surya

пожалуйста помочь

OriginalGriff

Прочтите его еще раз: установите SP и передайте ему параметр.

Рейтинг:
10

Nitin Surya

извините за поздний ответ... это лучший способ, чем я делал

Karthik_Mahalingam

ладно