SqlDataAdapter and SqlDataReader

本文关键字:SqlDataReader and SqlDataAdapter | 更新日期: 2023-09-27 17:59:31

我有一个存储过程,它返回一定数量的行。

案例1:当我使用SqlDataAdapter 时

SqlDataAdapter sdAdapter = new SqlDataAdapter();
ds = new DataSet();
sdAdapter.SelectCommand = myCommand;
sdAdapter.Fill(ds);
int recordCount = ds.Tables[0].Rows.Count;

案例2:当我使用SqlDataReader 时

SqlDataReader reader = myCommand.ExecuteReader();
if (reader.HasRows)
{
   while (reader.Read())
    {
     recordCount++;
    }
 }

在情况1中,recordCount为15,这是正确的。

在案例2中,出于某种原因,读者。HasRows返回false。

我在语法方面做错了什么吗?我相信myCommand的构建是正确的,因为我确实在案例1中得到了计数。

如有任何帮助,我们将不胜感激。

感谢

SqlDataAdapter and SqlDataReader

1.DataReader在连接的环境中工作,而DataSet在断开连接的环境中工作。2.数据集表示由任意数量的相互关联的DataTable对象组成的数据的内存缓存。DataTable对象表示内存中数据的表格块。

更多详细信息请访问sqldataadapter或sqldatareader

if (reader.HasRows)是多余的。当您说while (reader.Read())时,它只会在有任何行的情况下循环。此外,这个链接将解释HasRows需要一个可滚动的光标。请在此处阅读有关光标的信息。