Эффективная итерация по коллекции SqlCommand.Parameters при вызове хранимых процедур в циклах.C#

Место общения программистов C#
Ответить
Anonymous
 Эффективная итерация по коллекции SqlCommand.Parameters при вызове хранимых процедур в циклах.

Сообщение Anonymous »

Мой первоначальный подход к вызову хранимых процедур SQL Server соответствует следующему шаблону (упрощенному):

Код: Выделить всё

using(  SqlConnection   cn =    new SqlConnection( Utils.sSqlConn )  )
using(  SqlCommand      cm =    Utils.NewSqlCmdProc( cn, DA.prUser_InsUpd )  )
{
cm.Parameters.Add( "idUser",    SqlDbType.Int       ).Direction =   ParameterDirection.InputOutput;
cm.Parameters.Add( "sUser",     SqlDbType.VarChar,32    );
cm.Parameters.Add( "sName",     SqlDbType.VarChar,64    );
cm.Parameters.Add( "idLvl",     SqlDbType.TinyInt       );
cm.Parameters.Add( "sCode",     SqlDbType.VarChar,32    );
cm.Parameters.Add( "bActive",   SqlDbType.Bit           );

try
{   cn.Open( );
foreach(  User item in ls  )                        /// ls =is= List
if(  item.IsDirty  &&  item.IsValid( sb )  )    /// save every modified item
{
int     i =     0;
cm.Parameters[   i ].Value =    item.idUser;
cm.Parameters[ ++i ].Value =    item.sUser;
cm.Parameters[ ++i ].Value =    DA.DbNullStr( item.sName );
cm.Parameters[ ++i ].Value =    item.idLvl;
cm.Parameters[ ++i ].Value =    DA.DbNullStr( item.sCode );
cm.Parameters[ ++i ].Value =    item.bActive;

cm.ExecuteNonQuery( );

item.idUser =   (int) cm.Parameters[ 0 ].Value;     /// 

Подробнее здесь: [url]https://stackoverflow.com/questions/79786694/efficient-iteration-over-sqlcommand-parameters-collection-when-stored-procedures[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»