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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> параметры для IN clause 
V
    Опции темы
Bogdan1024
  Дата 5.10.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Есть SQL в стиле:
[SRC sql]SELECT ID, NAME FROM T WHERE ID IN (1, 2, 3)[/SRC]
Я использую SqlCommand.
Как добавить туда 1, 2, 3 одним параметром? 


--------------------
user posted image
PM MAIL   Вверх
Gluttton
Дата 5.10.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

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



Я делал так:
Код

FbConnection^ cntn=gcnew FbConnection(bldr->ConnectionString);         
System::String^ queryString;
queryString=L"SELECT G, T, GI, TI FROM TYPES("+
    (safe_cast<TBorder^>(e->Argument)->getXS()).ToString()+", "+
    (safe_cast<TBorder^>(e->Argument)->getYS()).ToString()+", "+
    (safe_cast<TBorder^>(e->Argument)->getXF()).ToString()+", "+
    (safe_cast<TBorder^>(e->Argument)->getYF()).ToString()+");";
try {
    cntn->Open();
    FbTransaction^ trn=cntn->BeginTransaction();
    FbCommand^ cmd=gcnew FbCommand(queryString, cntn, trn);
    FbDataReader^ rdr;
    rdr=cmd->ExecuteReader(CommandBehavior::CloseConnection);
    while(rdr->Read()) {
        TGT^ GT=gcnew TGT();
        GT->setG(rdr[0]->ToString());
        GT->setT(rdr[1]->ToString());
        GT->setGroupInfo(rdr[2]->ToString());
        GT->setTypeInfo(rdr[3]->ToString());
    }
}

Т.е. из объекта TBorder я "вытягивал" входные данные, которые преобразовывал в строку...
Выполнял запрос и результат передавал объекту GT...
Одним словом, если по сути вопроса, то строкой которая формируется на этапе выполнения...


--------------------
Слава Україні!
PM MAIL   Вверх
Любитель
Дата 5.10.2009, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(Bogdan1024 @  5.10.2009,  19:47 Найти цитируемый пост)
Как добавить туда 1, 2, 3 одним параметром?  

Это СУБД-зависимо. В общем случае - никак. Лучший способ (в большинстве случаев) передачи множества данных в T-SQL - это использование XML. Если перформанс некритичен (ну, точнее так - если данных передаётся не много), то действительно вполне пойдёт конкатенция запроса:
Код

string query = string.Format("select * from Products where ID in ({0})", string.Join(", ", ids.Select(id => id.ToString()).ToArray()));



--------------------
PM MAIL ICQ Skype   Вверх
Bogdan1024
Дата 7.10.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Ну какбэ я решил делать путём составления SQL так как оказывается такая проблема с помощью SqlCommand.Parameters не решается. Всем спасибо за ответы smile


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

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

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

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


 




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


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

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