SqlParameter[] sp = new SqlParameter[5];
            sp[0] = new SqlParameter("@DescriptionLength", SqlDbType.Int);
            sp[0].Value = DescriptionLength;
            sp[1] = new SqlParameter("@CatalogId", SqlDbType.Int);
            sp[1].Value = CatalogId;
            sp[2] = new SqlParameter("@Page", SqlDbType.Int);
            sp[2].Value = Page;
            sp[3] = new SqlParameter("@ProductsPerPage", SqlDbType.Int);
            sp[3].Value = ProductsPerPage;
            sp[4] = new SqlParameter("@HowManyProducts", SqlDbType.Int);
            sp[4].Direction = ParameterDirection.Output;
            SqlDataReader dr = DBOperate.ExecuteReader(conString, CommandType.StoredProcedure, "GetProductsOnCatalog", sp);
            
            int howManyProducts = Int32.Parse(sp[4].Value.ToString());
为什么sp[4]为空,而我在查询分析器里可以得到值,请问如何解决?

解决方案 »

  1.   


    sp[4] = new SqlParameter("@HowManyProducts", SqlDbType.Int);
    sp[4].Direction = ParameterDirection.Output;
    改成
    sq[4] = new SqlParameter("@HowManyProducts", SqlDbType.Int, 4, ParameterDirection.Output, false, (byte)0, (byte)0, "", DataRowVersion.Default, null);还不行的话看看你的存储过程怎么写的?
      

  2.   

    问题可能在
    SqlDataReader dr = DBOperate.ExecuteReader(conString, CommandType.StoredProcedure, "GetProductsOnCatalog", sp);你换成个不返结果的ExecuteNonQuery看看
    DBOperate.ExecuteNonQuery(conString, CommandType.StoredProcedure, "GetProductsOnCatalog", sp);
      

  3.   

    ExecuteReader方法必须得有read()才生效,换ExecuteNonQuery