我从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();
这一行
尝试重新制作新程序,新表但仍未成功。