top of page

Llamar un Stored Procedure de SQL desde C# y regresar un objeto con informacion de la tabla de SQL

Código simple para correr un stored procedure con sin variable de entrada, retornando el valor en forma de lista

Dada la clase Links almacenada como  un MODELO MVC.

    public class Links
    {
        public string Topic { get; set; }
        public string Comentario { get; set; }
    }

Se construye una procedimiento para usarlo como servicio retornando un objeto tipo Casas.

    public class DBDATOS
    {
        public List<Links> GetLinksList()
        {
            string usuario = "pass";
            string password = "pass";
            string server = @"\CONECTIONEPC";
            string elNick = "Herradura";
            string initialCatalog = "empresa";           
            string nTopic = "";
            string nComentario = "";
            List<Links> listaLinks = new List<Links>();

            try
            {
                using (SqlConnection con = new SqlConnection("data source =" + server + "; uid =" +
                    usuario + "; PWD =" + password + "; initial catalog = " + initialCatalog))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand("spGetAccesosDirectos", con);
//spGetAccesosDirectoses el Stored procedure
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        if (dr.Read())
                        {
                            nComentario = (dr["Comentario"].ToString());  //Comentario es la columna del la base de datos
                            nTopic = (dr["Topic"].ToString());

                            listaLinks.Add(new Links
                            {
                                Topic = nTopic,
                                Comentario = nComentario

                            }
                            );
                        }
                    }                   
                }               
               
                return listaLinks;

            }
            catch (Exception e)
            {
                return new List<Links>();
            }
        }

    }
 

En forma de ApiController podemos llamar el metodo

using System.Web.Http;
using System.Web.Script.Serialization;

namespace ElApi.Controllers
{
    public class HomeController : ApiController
    {

   [HttpGet]

        public IHttpActionResult GetLinks()

        {
            var listLinks = new DBDATOS();
            return Ok(new JavaScriptSerializer().Serialize(listLinks.GetLinksList()) );

        }

    }
}

El stored procedure es el siguiente.

USE [empresa]
GO


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:Emmanuel        
-- Create date: 24 sep 2018
-- Description: regresa los accesos
-- exec spGetAccesosDirectos
-- =============================================

ALTER PROCEDURE spGetAccesosDirectos 
   
AS
BEGIN    
   SET NOCOUNT ON;
   SELECT acceso, Comentario from dbo.Accessos
END
GO

Otro ejemplo de ejecutar un Stored Procedure con parametros

 [HttpGet]
        public string BajarDatos(string usuario, string cuenta)
        {  
            var sp = "My_StoredProc";
            var ds = new DataSet();
            var da = new SqlDataAdapter();
            var connectionString = "data source=miServer;initial catalog=escuela;connect  timeout=120;user  
id=miID;password=MIpW";

            using (var sqlCon = new SqlConnection(connectionString))
            {
                sqlCon.Open();
                SqlCommand sql_cmnd = new SqlCommand(sp, sqlCon);
                sql_cmnd.Parameters.AddWithValue("@usuario", SqlDbType.NVarChar).Value = usuario;
                sql_cmnd.Parameters.AddWithValue("@cuenta", SqlDbType.NVarChar).Value = cuenta;
                sql_cmnd.CommandType = CommandType.StoredProcedure;

                da.SelectCommand = sql_cmnd;

                da.Fill(ds);

                sqlCon.Close();
            }
            return JsonConvert.SerializeObject(ds);
        }

bottom of page