Stored Procedure call with parameters in ASP.NET MVC
        Posted  
        
            by cc0
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by cc0
        
        
        
        Published on 2010-04-22T16:13:14Z
        Indexed on 
            2010/04/22
            16:23 UTC
        
        
        Read the original article
        Hit count: 913
        
ASP.NET
|asp.net-mvc
I have a working controller for another stored procedure in the database, but I am trying to test another.
When I request the URL;
I get the following error message, which is understandable but I can't seem to find out why it occurs;
Procedure or function 'esp_GetPlacesWithinGeoSpan' expects parameter '@MinLat', which was not supplied.
This is the code I am using.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Mvc.Ajax;
    using System.Data;
    using System.Text;
    using System.Data.SqlClient;
namespace prototype.Controllers
{
    public class MapController : Controller
    {
        //Initial variable definitions
        //Array with chars to be used with the Trim() methods
        char[] lastComma = { ',' };
        //Minimum and maximum lat/longs for queries
        float _minLat;
        float _maxLat;
        float _minLng;
        float _maxLng;
        //Creates stringbuilder object to store SQL results
        StringBuilder json = new StringBuilder();
        //Defines which SQL-server to connect to, which database, and which user
        SqlConnection con = new SqlConnection(...connection string here...);
        // 
        // HTTP-GET: /Map/ 
        public string CallProcedure_getPlaces(float minLat, float maxLat, float minLng, float maxLng)
        {
            con.Open();
            using (SqlCommand cmd = new SqlCommand("esp_GetPlacesWithinGeoSpan", con))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@MinLat", _minLat);
                cmd.Parameters.AddWithValue("@MaxLat", _maxLat);
                cmd.Parameters.AddWithValue("@MinLng", _minLng);
                cmd.Parameters.AddWithValue("@MaxLng", _maxLng);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        json.AppendFormat("\"{0}\":{{\"c\":{1},\"f\":{2}}},", reader["PlaceID"], reader["PlaceName"], reader["SquareID"]);
                    }
                }
                con.Close();
            }
            return "{" + json.ToString().TrimEnd(lastComma) + "}";
        }
        //http://host.com/Map?minLat=0&maxLat=50&minLng=0&maxLng=50
        public ActionResult Index(float minLat, float maxLat, float minLng, float maxLng)
        {
            _minLat = minLat;
            _maxLat = maxLat;
            _minLng = minLng;
            _maxLng = maxLng;
            return Content(CallProcedure_getPlaces(_minLat, _maxLat, _minLng, _maxLng));
        }
    }
}
Any help on resolving this problem would be greatly appreciated.
© Stack Overflow or respective owner