Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать массив ID как параметр 
:(
    Опции темы
inkognitum
Дата 12.1.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.8.2006
Где: г. Набережные Чел ны

Репутация: нет
Всего: 1



Добрый день.

имею список ID, надо этот список передать в виде параметра в запрос где в запросе выполняется примерно след:

WHERE frmID in (?)


передаю в виде строки, ничего не получается.


Заранее спасибо.
--------------------
"Убить всех людей!" (с) Bender
PM MAIL ICQ Skype   Вверх
1stain
Дата 12.1.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 5
Всего: 40



передавай параметром в виде строки "id1,id2,id3"
в sql юзай функцию для создания из этой строки таблицы:

Код

CREATE function [dbo].[fn_SplitString] (@String nvarchar(4000), @Delimiter char(1))
/*****************************************************************************************************************
FUNCTION:    fn_SplitString
PURPOSE:    split the text with some character like ',' or any other character.
*****************************************************************************************************************/
Returns @Results Table (Items nvarchar(50))
As
Begin
    Declare @Index int
    Declare @Slice nvarchar(4000)

    Select @Index = 1
    If @String Is NULL Return

    While @Index != 0
    Begin
        Select @Index = CharIndex(@Delimiter, @String)
        
        If @Index <> 0
            Select @Slice = left(@String, @Index - 1)
        else
            Select @Slice = @String
        
        Insert into @Results(Items) Values (RTrim(Ltrim(@Slice)))
        Select @String = right(@String, Len(@String) - @Index)

        If Len(@String) = 0 break

    End
    
    Return
End


Код

where  frmID in (select * from fn_SplitString(@Ids, ','))



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
inkognitum
Дата 12.1.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.8.2006
Где: г. Набережные Чел ны

Репутация: нет
Всего: 1



Цитата(1stain @ 12.1.2009,  21:54)
передавай параметром в виде строки "id1,id2,id3"
в sql юзай функцию для создания из этой строки таблицы:

Код

CREATE function [dbo].[fn_SplitString] (@String nvarchar(4000), @Delimiter char(1))
/*****************************************************************************************************************
FUNCTION:    fn_SplitString
PURPOSE:    split the text with some character like ',' or any other character.
*****************************************************************************************************************/
Returns @Results Table (Items nvarchar(50))
As
Begin
    Declare @Index int
    Declare @Slice nvarchar(4000)

    Select @Index = 1
    If @String Is NULL Return

    While @Index != 0
    Begin
        Select @Index = CharIndex(@Delimiter, @String)
        
        If @Index <> 0
            Select @Slice = left(@String, @Index - 1)
        else
            Select @Slice = @String
        
        Insert into @Results(Items) Values (RTrim(Ltrim(@Slice)))
        Select @String = right(@String, Len(@String) - @Index)

        If Len(@String) = 0 break

    End
    
    Return
End


Код

where  frmID in (select * from fn_SplitString(@Ids, ','))

Я использую Типизированый дата сет и мне надо в конструкторе создать запрос и в этот запрос послать параметр.
--------------------
"Убить всех людей!" (с) Bender
PM MAIL ICQ Skype   Вверх
emmanuil
Дата 31.1.2009, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Если числовой массив, то должно получиться так:
Код

            int[] ar = new int[10];
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < ar.Length; i++) {
                sb.Append(i);
                if (i < ar.Length - 1)
                    sb.Append(", ");
            }
            string query = string.Format("... where id in ({0})", sb.ToString());

а если строковый, то нужно так
Код

sb.Append(string.Concat("'", i, "'"));

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.