未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。我调试存储过程,没有错误,输入1,3有记录集void list()
{
DataTable dt=html_cartype_6.ReturnCartypeBiaojiao(1,3);
if (dt.Rows.Count>0)//这行错了
{
for(int i=0;i<=dt.Rows.Count-1;i++)
{
Response.Write(dt.Rows[i]["cartype_id"].ToString());
}

} }
方法:ReturnCartypeBiaojiao
public static DataTable ReturnCartypeBiaojiao(int id,int types)
{ SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlDataAdapter  cmd=new SqlDataAdapter("sp_newcars_ListbijiaoCartypeId",conn);

cmd.SelectCommand.CommandType = CommandType.StoredProcedure; cmd.SelectCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));
cmd.SelectCommand.Parameters["@id"].Value = id; cmd.SelectCommand.Parameters.Add(new SqlParameter("@types", SqlDbType.Int));
cmd.SelectCommand.Parameters["@types"].Value = types; conn.Open(); DataSet ds = new DataSet();
cmd.Fill(ds, "cartypebiaojiao"); ds.Dispose();
cmd.Dispose();
conn.Close();
return ds.Tables["bj"];

}

解决方案 »

  1.   

    CREATE       PROCEDURE sp_newcars_ListbijiaoCartypeId
    @id int,
    @types int --@types=2同价位车型比较 @types=3同排量车型比较
     ASdeclare @cartype int --当前车系类型
    declare @inout int   --当前车型是否国产,进口               0国产,1进口
    declare @price nvarchar(60) --本车价格
    declare @ccv_paiqiliang nvarchar(50) --本车排气量  select @cartype=s.CarSeriesType,@inout=s.inout,@price=cast(round(c.etprice,0) as nvarchar(60)),@ccv_paiqiliang=c.ccv_paiqiliang  from tbl_car_info As i,tbl_Car_info2 As c ,tbl_car_series s where i.carseriesid=s.carseriesid and i.cartype_id=c.cartype_id and i.isdelete=0 and i.cartype_id=@id 
    --select @cartype=s.CarSeriesType,@inout=s.inout,@price=c.etprice,@ccv_paiqiliang=c.ccv_paiqiliang  from tbl_car_info As i,tbl_Car_info2 As c ,tbl_car_series s where i.carseriesid=s.carseriesid and i.cartype_id=c.cartype_id and i.isdelete=0 and i.cartype_id=@id  if (@types=2)
    begin
    --if (cast(@price As float)>0.5)
    --begin
    select i.cartype_id,i.cartypename from tbl_car_info i,tbl_car_info2 As c ,tbl_car_series s where i.carseriesid=s.carseriesid and i.cartype_id=c.cartype_id  and i.isdelete=0 and s.inout=@inout and s.CarSeriesType=@cartype and   i.cartype_id<>@id and cast(c.etprice AS nvarchar(60))<>'' and cast(c.etprice AS nvarchar(60))<>'0' and cast(round(c.etprice,0) As nvarchar(60))=@price  order by i.carseriesid
    --end
    end

    else
    begin
    --if (cast(@price As float)>0.5)
    --begin

    select i.cartype_id,i.cartypename from tbl_car_info i,tbl_car_info2 As c ,tbl_car_series As m where i.carseriesid=m.carseriesid and i.cartype_id=c.cartype_id and i.isdelete=0 and  m.inout=@inout and m.CarSeriesType=@cartype  and i.cartype_id<>@id and c.ccv_paiqiliang<>'' and c.ccv_paiqiliang<>'0' and c.ccv_paiqiliang is not null  and c.ccv_paiqiliang=@ccv_paiqiliang   order by i.carseriesid
    --end
    endGO
      

  2.   

    是不是cmd.Fill(ds, "cartypebiaojiao");和
    return ds.Tables["bj"];
    的名称不一样?
      

  3.   

    方法:ReturnCartypeBiaojiao
    public static DataTable ReturnCartypeBiaojiao(int id,int types)
    { SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    SqlDataAdapter  cmd=new SqlDataAdapter("sp_newcars_ListbijiaoCartypeId",conn);

    cmd.SelectCommand.CommandType = CommandType.StoredProcedure; cmd.SelectCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));
    cmd.SelectCommand.Parameters["@id"].Value = id; cmd.SelectCommand.Parameters.Add(new SqlParameter("@types", SqlDbType.Int));
    cmd.SelectCommand.Parameters["@types"].Value = types; conn.Open(); DataSet ds = new DataSet();
    cmd.Fill(ds, "cartypebiaojiao"); ds.Dispose();
    cmd.Dispose();
    conn.Close();
    return ds.Tables["bj"];

    }---------------------------------------------------------------------
    錯誤在ds.Dispose()上面
    此時不把ds回收
    把ds.Dispose()這句代碼拿掉試一下
      

  4.   

    還有return ds.Tables["bj"]
    你的"bj"從何而來,如果只返回的是一個表的話請用
    return ds.Tables[0]
      

  5.   

    DataSet dataset = new DataSet();
     dataset.Tables.Add("aaa");
     adapter.Fill(dataset, "AAA");