Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Передача параметра в запрос через функцию


Автор: Yagmort 23.11.2010, 13:33
Код

SqlCommand command = new SqlCommand(query,cs);
..
..
..
command.Parameters.Add(p1, sql1);
command.Parameters.Add(p2, sql2);
command.Parameters.Add(p3, sql3);

Можно ли как нибудь для запроса query передать параметры в этот запрос динамически, через функцию. Например мне надо передать 30 параметров из разных компонентов. Прийдется завести 30 строковых
Код

 p1="@Name1",p2="@Name2"
переменных и 30 типов данных
Код

SqlDbType sql1=new SqlDbType();
sql1=SqlDbType.string
SqlDbType sql2=new SqlDbType();
sql2=SqlDbType.int
SqlDbType sql3=new SqlDbType();
sql3=SqlDbType.bool

и т.п.
 и соответсвенно 30 компонентов...  Но это не очень удобно. Есть идеи получше ?

Автор: RobinHoodPHD 23.11.2010, 23:11
Ну можно тупо генерировать строку запроса по кускам. Забить на хороший способ передачи параметров с помощью коллекции параметров и просто в каждом вашем модуле клепать строки с параметрами. Например у вас запрос что то типа "EXEC dbo.SampleStrdProc @p1,@p2,@p3". В каждом модуле, где вы определяете параметры будущего запроса сразу заносим их в строки, а создании объекта SqlCommand просто сшиваем их в один запрос
Код

SqlCommand command = new SqlCommand("EXEC dbo.SampleStrdProc" + ParamFromModul1 + ParamFromModul2,cs);

а в переменных ParamFromModul1,ParamFromModul2 у нас что то типа "'123','data',0" - ваши параметры
Типы тут никакие не нужны, и переменных будет не так много - по числу модулей

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)