SqlDataReader不返回所有记录

时间:2012-09-17 17:03:44

标签: sql-server ado.net sqldatareader

我遇到了ADO.NET SqlDataReader的问题。当我直接在SSMS中运行底层存储过程时 - 它返回170万条记录。当我运行填充ADO.NET DataTable的相关VB.NET代码时 - 我还获得了170万条记录。

但是当我运行循环来填充像这样的通用列表时

While i_oDataReader.Read
   m_aFullIDList.Add(i_oDataReader.GetInt32(0))
End While

它返回的记录少得多,而且这个数字可能会有所不同。在循环结束时,如果我检查m_aFullIDList.Count它可能是100000或500000等。任何想法为什么以及如何解决它?谢谢!

2 个答案:

答案 0 :(得分:2)

感谢@Tim Schemlter提到的引用,我找到了用于DataReader创建的选项“CommandBehavior.SequentialAccess”。这解决了这个问题。例如。而不是

drReader = oCommand.ExecuteReader();

使用

drReader = oCommand.ExecuteReader(CommandBehavior.SequentialAccess);

并且它可以正常工作。

答案 1 :(得分:0)

您是否尝试过使用GetInt64()方法?我意识到,只有只有 170万条记录,GetInt32()方法应该足够大;我更好奇。

另外,如果您认为SQL无法跟上DataReader,您是否尝试在循环中添加等待以使其能够赶上?