有没有一种方法可以告诉DataReader是否在没有调用.Read()的情况下迭代了?
比方说,我返回一个DataReader并完全使用此代码遍历它:有没有一种方法可以告诉DataReader是否在没有调用.Read()的情况下迭代了?
While Reader.Read
Dim x as string = Reader.GetString("x")
End While
我希望能够确定它是否已经通过While循环后遍历了不调用.Read ()。原因是因为.Read()在被调用时自动前进到下一行。如果读者没有完全重复读过的情况,我不希望它进入下一行。似乎有一些方法可以告诉读者是否已经完全阅读。
每史蒂夫,看起来这是一个重复:
How to detect EOF on DataReader in C# without executing Read()
由于史蒂夫没有按我不想把他的评论放在答案上,我用这个链接回答我自己的问题。我会删除这个问题,但是因为它有答案,所以我不会让我。我不希望这会影响我的问题/回答比率,所以我们在这里。
它错了。
If there is a circumstance where the reader hasn't completely been iterated through
它迭代到读者。
如果使用,
If reader.read
//
End if
它仅读取一次
我不确定我关注。在我的问题中,我相信我说*原因是因为.Read()在调用*时自动前进到下一行。 – oscilatingcretin 2013-03-13 12:08:57
您可以通过加载到一个DataTable
像下面通过Datareader
数据迭代,
Dim DtTbl As DataTable = New DataTable
'Load Your DataReader into a Datatable
DtTbl .Load(rdr)
'And Here You can itereate through Your data like below
For Each xDataRow As DataRow In DtTbl .Rows
MsgBox(xDataRow.Item("COLUMN_NAME"))
Next
[注意:将数据从datareader
加载到datatable
,datareader
将自动关闭。但在同一时间,您可以在问题的意见通过datatable
多次重复使用计数的任何约束]
不,没有办法直接检查使用开箱即用的DataReader,但看看[这个问题](http://stackoverflow.com/questions/7844355/how-to-detect-eof - 在数据读取器在C - 急 - 没有执行阅读)以及他们如何很好地解决了这个问题 – Steve 2013-03-13 12:01:05
你可以填写一个数据表。 Datareader不会让你回去。 – Jaxedin 2013-03-13 11:53:00
Steve,我相信你的回答是正确的。你应该转换回答,以便我可以标记它。 – oscilatingcretin 2013-03-13 13:51:13