Llamar un procedimiento almacenado SqlServer en C# .NET


Para llamar un procedimiento almacenado de la forma clásica se utiliza el la clase SqlCommand, en el siguiente ejemplo tenemos una clase llamada ClsProcedimientos, en su constructor se instancia una nueva conexión a la base de datos SqlServer, así como el SqlCommand. Utilizaremos dos tipos de procedimientos, aquellos que devuelven un resultado y los que no (se devuelve un int en caso de correcta ejecución):


using System;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data.Common;
using System.Data;

namespace WsInventarioFisicoRF
{
    public class ClsProcedimientos
    {
        private SqlCommand cmd;
        private SqlConnection sqlConnection1;
        private SqlDataReader reader; 
        public ClsProcedimientos()
        {

            sqlConnection1 = new SqlConnection("Data Source=sqlsvr;Initial Catalog=dbInventarioFisicoWHM;
User ID=usuariorf;Password=usuariorf");

            cmd = new SqlCommand();    
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = sqlConnection1;
        }

        public DataTable usp_InventarioFisico_Operario(string strClaveOperario, string strNombre){         
            
            cmd.CommandText = "usp_InventarioFisico_Operario";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@strClaveOperario", SqlDbType.VarChar).Value = strClaveOperario;
            cmd.Parameters.Add("@strNombre", SqlDbType.VarChar).Value = strNombre;
            
            if (sqlConnection1.State == ConnectionState.Closed)
                sqlConnection1.Open();  

            reader = cmd.ExecuteReader();
            DataTable usuario = new DataTable();
            usuario.Load(reader);
            sqlConnection1.Close();

            return usuario;
        }

        public int usp_Inventariofisico_Ubicaciones_CambiarEstado(int pintIdInventario, string pstrUbicacion, 
string pstrEstado, int pintConteo){

            cmd.CommandText = "usp_Inventariofisico_Ubicaciones_CambiarEstado";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@pintIdInventario", SqlDbType.Int).Value = pintIdInventario;
            cmd.Parameters.Add("@pstrUbicacion", SqlDbType.VarChar).Value = pstrUbicacion;
            cmd.Parameters.Add("@pstrEstado", SqlDbType.VarChar).Value = pstrEstado;
            cmd.Parameters.Add("@pintConteo", SqlDbType.Int).Value = pintConteo;

            if (sqlConnection1.State == ConnectionState.Closed)
                sqlConnection1.Open();

            int afect = cmd.ExecuteNonQuery();
            sqlConnection1.Close();
            return afect;
        }
    }
}


Para utilizar los métodos usamos un DataTable para recuperar los datos de la siguiente manera:


DataTable usuario = proce.usp_InventarioFisico_Operario(strClaveOperario, strNombre);
tblOperariosBodega operario = new tblOperariosBodega();

if (usuario.Rows.Count > 0){
           operario.strCodigoOperario = usuario.Rows[0]["strCodigoOperario"].ToString();
           operario.strNombreCortoOperario = usuario.Rows[0]["strNombreCortoOperario"].ToString();
           operario.strCodigoBodega = usuario.Rows[0]["strCodigoBodega"].ToString();                                
}

Comentarios

Entradas populares