我有一个存储过程,它返回一定数量的行。
案例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,这是正确的。
在第二种情况下,由于某些原因,reader.HasRows返回false。
我在语法方面做错了什么吗?我确信myCommand已经被正确构建,因为我在第一种情况下得到了计数。
任何帮助都将不胜感激。
谢谢
发布于 2013-02-16 11:08:01
if (reader.HasRows)是多余的。当您说while (reader.Read())时,它只会在有任何行的情况下循环。此外,this link将解释HasRows需要一个可滚动的游标。阅读有关游标here的内容。
发布于 2013-03-16 00:36:55
1. DataReader在连接的环境中工作,而DataSet在断开连接的环境中工作。2. DataSet表示由任意数量的相互关联的DataTable对象组成的内存中的数据缓存。DataTable对象表示内存中数据的表格块。
更多详情请访问sqldataadapter or sqldatareader
https://stackoverflow.com/questions/14905945
复制相似问题