0

データベースからデータを取得するためExecuteReaderに ofを使用しています。Microsoft.Practices.EnterprizeLibrary私が作成したストア プロシージャは 2 つのレコードを返しますが、ExecuteReader1 つのレコードを返します。なぜそれが起こっているのか混乱しています。次のコード行を使用しています。

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;
    }

ありがとう

4

1 に答える 1

2

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;
    }
}
于 2013-02-27T08:04:11.937 に答える