none
Devolver Fila con StoreProcedure RRS feed

  • Pregunta

  • Bueno dias con todos, estoy como loco, tratando de avanzar con esto, estoy utilizando N-capas, y me atasque en la capa de datos; he creado un metodo que devuelve un datatable, para la busqueda de un registro, tengo storeprocedure que piden un para parametro, hasta no logro solucionar de que me devuelva la fila encontrada a un Datatable, aqui el codigo;

       public DataTable ObtenerUsuario(DEmpleados parEmpleados)
            {
                DataTable dt;
                SqlDataReader lector;
                SqlConnection cn = new SqlConnection();

                try
                {
                    cn.ConnectionString = DConexion.CnDBEmpresa;
                    cn.Open();

                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = cn;
                    cmd.CommandText = "Sistemas.ObtenerUsuario";
                    cmd.CommandType = CommandType.StoredProcedure;

                    SqlParameter ParameterUsuario = new SqlParameter();
                    ParameterUsuario.ParameterName = "@usuario";
                    ParameterUsuario.SqlDbType = SqlDbType.VarChar;
                    ParameterUsuario.Size = parEmpleados.Usuario.Length;
                    ParameterUsuario.Value = parEmpleados.Usuario;
                    cmd.Parameters.Add(ParameterUsuario);

                    lector = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    dt = new DataTable();
                    dt.Load(lector);
                    


                    //IDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    //cmd.Dispose();
                    //return (DataTable)reader;
                    //SqlDataAdapter da = new SqlDataAdapter(cmd);

                    //da.Fill(dt);
                }
                catch (Exception ex)
                {
                    //dt = null;
                    throw new Exception("Error al intentar ejecutar el procedimiento almacenado Sistemas.ObtenerUsuario. " + ex.Message);
                }
                finally
                {
                    cn.Close();
                }
                return dt;

    miércoles, 12 de abril de 2017 16:14

Respuestas

  • hola

    >>solo me muestra el parametro que ingrese en usuario; los demas campos siguen vacio

    como accedes a los datos del datatable ? recueda que puedes inspeccionarlo

    usa la opcion de la imagen cuando estes en debug para ver que datos recuperas desde el procedure

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de abril de 2017 18:27

Todas las respuestas

  • hola

    pero si es un datatable porque no usas un SqlDataAdapter

    SqlConnection cn = new SqlConnection(DConexion.CnDBEmpresa);
    cn.Open();
    
    SqlCommand cmd = new SqlCommand("Sistemas.ObtenerUsuario", cn);
    cmd.CommandType = CommandType.StoredProcedure;
    
    cmd.Parameters.AddWithValue("@usuario", parEmpleados.Usuario)
    
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);

    asi de simple

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de abril de 2017 16:19
  • Gracias por responder compañero, lo intente, pero aun persiste, al debbugear solo me muestra el parametro que ingrese en usuario; los demas campos siguen vacio

    este el codigo de mi SP

    ALTER proc [sistemas].[ObtenerUsuario]
    @usuario as varchar(50)
    as
    begin
    set nocount on
    select re.codigo, re.nombre_empleado, re.apellido_empleado, re.direccion, re.region, re.pais, re.telefono, uc.nombre_ciudad, re.usuario
    from RecursosHumanos.Empleados re inner join Ubicacion.Ciudades uc
    on re.id_ciudad = uc.id_ciudad
    where re.usuario = @usuario
    end;
    go

    miércoles, 12 de abril de 2017 17:15
  • hola

    >>solo me muestra el parametro que ingrese en usuario; los demas campos siguen vacio

    como accedes a los datos del datatable ? recueda que puedes inspeccionarlo

    usa la opcion de la imagen cuando estes en debug para ver que datos recuperas desde el procedure

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de abril de 2017 18:27