ExecuteReader没有返回存储过程返回的所有记录

本文关键字:返回 记录 存储过程 ExecuteReader | 更新日期: 2023-09-27 18:01:32

我使用Microsoft.Practices.EnterprizeLibraryExecuteReader从数据库中获取数据。存储过程,我已经创建返回两个记录,但ExecuteReader给我一个记录。我很困惑为什么会这样。我正在使用以下代码行。

public List<Products> GetProductsData(Products p)
    {
        List<Products> productList = new List<Products>();
        using (IDataReader rdr = dbt.ExecuteReader("pGetProducts",p.productType))
        while (rdr.Read())
            {
                Products obj= new Products();
                {
                    obj.Id = Common.CheckIntegerNull(rdr["id"]);
                    obj.AId = Common.CheckIntegerNull(rdr["aid"]);
                    obj.Name = Common.CheckStringNull(rdr["name"]);
                    obj.Price = Common.CheckDecimalNull(rdr["amt"]);
                }
                productList.Add(obj);
            }
        return productList;
    }

谢谢

ExecuteReader没有返回存储过程返回的所有记录

要使用一次执行的所有结果集,您需要调用NextResult(),直到它返回false。

public List<Products> GetProductsData(Products p)
{
    List<Products> productList = new List<Products>();
    using (IDataReader rdr = dbt.ExecuteReader("pGetProducts",p.productType))
    {
       do
       {
          while (rdr.Read())
          {
            Products obj= new Products();
            {
                obj.Id = Common.CheckIntegerNull(rdr["id"]);
                obj.AId = Common.CheckIntegerNull(rdr["aid"]);
                obj.Name = Common.CheckStringNull(rdr["name"]);
                obj.Price = Common.CheckDecimalNull(rdr["amt"]);
            }
            productList.Add(obj);
          }
        } while (rdr.NextResult());
      return productList;
    }
}