Dealer dl = new Dealer();
        using (SqlDataReader dr = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "searchOnDealer", new SqlParameter("@ID", dID)))
        {
            if (dr.HasRows)
            {
                dl.ID = dr.GetInt32(0);
                dl.Name = dr.GetString(1);
                dl.Address = dr.GetString(2);
                dl.Theme = dr.GetInt32(5);
            }
           
        }经调试:dl.ID = dr.GetInt32(0);  我运行到这里就出错
说:在没有任何数据时进行无效的读取尝试。 
请指教!

解决方案 »

  1.   

    SqlDataReader dr = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "searchOnDealer", new SqlParameter("@ID", dID))
    有问题吧, 存储过程调用对不对?参数是否正确?
      

  2.   

    你只是判断了一下是否有数据,但是没有进行读取操作while(reader.Read())
    {
        dl.ID = reader.GetInt32(0);
        dl.Name = reader.GetString(1);
        dl.Address = reader.GetString(2);
        dl.Theme = reader.GetInt32(5);}
      

  3.   

    if (dr.HasRows && dr.Read()) 
                {
                    int id=0;
     int.TryPase(dr["字段名1"].ToString();,out id);
    dl.ID=id;
                    dl.Name = dr["字段名2"].ToString();
                    dl.Address = dr["字段名3"].ToString();
                     
                    int theme=0;
     int.TryPase(dr["字段名5"].ToString();,out theme);
    dl.Theme =theme; //如果确定数据没有问题,就用Parse()
                }