ExecuteReader没有返回存储过程返回的所有记录
本文关键字:返回 记录 存储过程 ExecuteReader | 更新日期: 2023-09-27 18:01:32
我使用Microsoft.Practices.EnterprizeLibrary
的ExecuteReader
从数据库中获取数据。存储过程,我已经创建返回两个记录,但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;
}
谢谢
要使用一次执行的所有结果集,您需要调用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;
}
}