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: 833

Filed under:
|

I have a working controller for another stored procedure in the database, but I am trying to test another.

When I request the URL;

http://host.com/Map?minLat=0&maxLat=50&minLng=0&maxLng=50

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

Related posts about ASP.NET

Related posts about asp.net-mvc