存储过程返回未将对象引用设置为对象的实例

时间:2016-09-16 12:10:17

标签: c# asp.net stored-procedures

我从URL获取值,并使用存储过程将该值与数据库匹配。 但是使用存储过程cmd.ExecuteScalar();时会返回错误,如

  

对象引用未设置为对象的实例。

我的网址看起来像

Domain/used-audi-cng-cars-in-Delhi  

德里在Cities表中 cng在FuelTypes表中 audi在ManufacturersTable

我希望将audi,cng,delhi与数据库表的值相匹配 这是我的存储过程

Create PROCEDURE [dbo].[NewJsonData]
      @Action VARCHAR(10)
      ,@City VARCHAR(100) = NULL  
      ,@ManufacturerPara VARCHAR(100) = NULL
      ,@FuelTypePara VARCHAR(100) = NULL
      ,@BodyTypePara VARCHAR(100) = NULL    
AS
BEGIN
      SET NOCOUNT ON;

      --SELECT
    IF @Action = 'Cities'
      BEGIN
         if exists(  SELECT CityName
            FROM Cities where CityName=@City)               
            select @City                
            else            
            select 0

      END

      --INSERT
    IF @ACtion='Manufacturer'
     BEGIN
         if exists(  SELECT [ManufacturerName]
            FROM [dbo].[ManufacturersTable] where [ManufacturerName]=@ManufacturerPara)             
            select @ManufacturerPara                
            else                
            select 0                
      END

      --UPDATE
    IF @Action='Fuel'
      BEGIN
         if exists(  SELECT [FuelTypeName]
            FROM [dbo].[FuelTypes] where [FuelTypeName]=@FuelTypePara)              
            select @FuelTypePara                
            else                
            select 0                
      END
       IF @Action='BodyType'
      BEGIN
         if exists(  SELECT [BodyTypeName]
            FROM [dbo].[BodyTypes] where [BodyTypeName]=@BodyTypePara)              
            select @BodyTypePara                
            else                
            select 0

      END

END

我的aspx页面代码看起来像

  string url = HttpContext.Current.Request.Url.AbsoluteUri;

            string GetString = url.Substring(url.LastIndexOf("/") + 1);
            string[] StringUrl = GetString.Split('-');
            for (int i = 0; i < StringUrl.Count(); i++)
            {
                if (StringUrl[i] != "used" && StringUrl[i] != "cars" && StringUrl[i] != "in")
                {
                    using (SqlConnection con = new SqlConnection(connection))
                    {
                        using (SqlCommand cmd = new SqlCommand("NewJsonData", con))
                        {
                            con.Open();
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@Action", "Cities");
                            cmd.Parameters.AddWithValue("@City", StringUrl[i]);
                            var resultCities = cmd.ExecuteScalar().ToString();
                            if (resultCities != "0")
                            {                               
                                if (drp1.Items.FindByValue(resultCities) != null)
                                {
                                    drp1.Items.FindByValue(resultCities).Selected = true;
                                }                               
                            }
                            if (resultCities == "0")
                            {
                                cmd.Parameters.Clear();
                                cmd.Parameters.AddWithValue("@Action", "Manufacturer");
                                cmd.Parameters.AddWithValue("@ManufacturerPara", StringUrl[i]);
                                var resultManufacturer = cmd.ExecuteScalar().ToString();
                                if (resultManufacturer != "0")
                                {
                                    ListItem listItem1 = ManufacturerCheckBox.Items.FindByText(resultManufacturer);

                                    if (listItem1 != null) listItem1.Selected = true;
                                }
                                if (resultManufacturer == "0")
                                {
                                    cmd.Parameters.Clear();
                                    cmd.Parameters.AddWithValue("@Action", "Fuel");
                                    cmd.Parameters.AddWithValue("@FuelTypePara", StringUrl[i]);
                                    var resultFuelTypes = cmd.ExecuteScalar().ToString();
                                    if (resultFuelTypes != "0")
                                    {
                                        ListItem listItem = FuelTypeCheckBox.Items.FindByText(resultFuelTypes);

                                        if (listItem != null) listItem.Selected = true;
                                    }
                                    if (resultFuelTypes == "0")
                                    {
                                        cmd.Parameters.Clear();
                                        cmd.Parameters.AddWithValue("@Action", "BodyType");
                                        cmd.Parameters.AddWithValue("@BodyTypePara", StringUrl[i]);
                                        var resultBodyTypes = cmd.ExecuteScalar().ToString();
                                        if (resultFuelTypes != "0")
                                        {
                                            ListItem listItem = BodyTypeCheckBoxes.Items.FindByText(resultFuelTypes);

                                            if (listItem != null) listItem.Selected = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

我在

处收到对象引用错误
var resultManufacturer = cmd.ExecuteScalar().ToString();

这一行

尝试重新制作新程序,新表但仍未成功。

0 个答案:

没有答案