none
Ejecutar Stored en ASP:NET RRS feed

  • Pregunta

  • Buenos dias compañeros

    tengo un problema , estoy tratando de ejecutar un stored desde asp.net pero no lo realiza ya que no se como pasarle la conexion en la parte del  SqlCommand alguien podria ayudarme por favor.

    tengo una clase llamada Conexion donde tengo la cadena de conexion y la clase donde trato de ejecutar el stored lo que marco en rojo es donde llamo al stored y ahy mismo tengo que agregar la conexion de que manera podria agregarla?

    espero puedan ayudarme

    muchas gracias

    viernes, 15 de abril de 2016 16:31

Respuestas

  • Hola,

    Puedes intentar haciendo esto :

       

    public class Conexion { private SqlConnection cn; private string Cadena = ""; //En vez de un void, me retorne una nueva Conexion con la cadena

    public SqlConnection Conecta() { cn = new SqlConnection(Cadena); return cn; } public void Conectado() { cn.Close(); } public void Desconectar() { cn.Close(); } }

    Luego al mandar a llamar.

                SqlCommand cmd;
    
                //Creamos nueva instancia
                Conexion conexion = new Conexion();
    
                cmd = new SqlCommand("MI_STOREDPROCEDURE", conexion.Conecta());
                cmd.CommandType = CommandType.StoredProcedure;
    
                cmd.Parameters.AddWithValue("@MIPARAMETRO", txtFitro.Text);
    
                try
                {
                    //Abrimos la conexion
                    conexion.Conectado();
    
                    cmd.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Se produjo un error : " + ex.Message);
                }
                finally
                {
                    //Antes de salir cerramos la conexión
                    conexion.Desconectar();
    
                    //Liberamos el objeto
                    conexion = null;
                }

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 15 de abril de 2016 17:07

Todas las respuestas

  • Hola,

    Puedes intentar haciendo esto :

       

    public class Conexion { private SqlConnection cn; private string Cadena = ""; //En vez de un void, me retorne una nueva Conexion con la cadena

    public SqlConnection Conecta() { cn = new SqlConnection(Cadena); return cn; } public void Conectado() { cn.Close(); } public void Desconectar() { cn.Close(); } }

    Luego al mandar a llamar.

                SqlCommand cmd;
    
                //Creamos nueva instancia
                Conexion conexion = new Conexion();
    
                cmd = new SqlCommand("MI_STOREDPROCEDURE", conexion.Conecta());
                cmd.CommandType = CommandType.StoredProcedure;
    
                cmd.Parameters.AddWithValue("@MIPARAMETRO", txtFitro.Text);
    
                try
                {
                    //Abrimos la conexion
                    conexion.Conectado();
    
                    cmd.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Se produjo un error : " + ex.Message);
                }
                finally
                {
                    //Antes de salir cerramos la conexión
                    conexion.Desconectar();
    
                    //Liberamos el objeto
                    conexion = null;
                }

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 15 de abril de 2016 17:07
  • muchas gracias JC NaupaCrispín  por el apoyo

    Saludos...

    viernes, 15 de abril de 2016 17:23
  • hola

    >>tengo una clase llamada Conexion donde tengo la cadena de conexion

    no crees ninguna clase de conexion, es una pesima idea

    define la conexion en un bloque using obteniendo la conexion directamente

    string connstring = ConfigurationManager.ConnectionStrings["connectionPrueba"].ConnectionString;

    using (SqlConnection conn = new SqlConnection("connstring")) { SqlCommand cmd = new SqlCommand("<storedprocedure>", conn); cmd.CommandType = SqlCommandType.StoredProcedure; cmd.Parameters.AddWithValue("@param1", valor); cmd.ExecuteNonQuery(); }

    lo reocmendable es que trabajes en capas, creando en este caso la capa de datos, como explico aqui

    [WinForms] Edición Empleados

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    viernes, 15 de abril de 2016 17:30
  • Hola leandro muchas gracias por la recomendacion de hecho estoy trabajando en capas tengo mi capa BDDatos y en esta misma tengo la clase Conexion actualmente la utilizaba como me lo recomiendas

    ¿por que es una mala tecnica utilizarla de esta manera?

    ya que solo tengo que instanciarla y abrir y cerrar la conexcion para poder ejecutar mis operaciones

    espero puedas aclarar mis dudas

    de antemano muchas gracias por responder

    Saludos amigo Leandro

    lunes, 18 de abril de 2016 16:56