Место общения программистов 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]
1760038702
Anonymous
Мой первоначальный подход к вызову хранимых процедур SQL Server соответствует следующему шаблону (упрощенному):
[code]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]