假设我返回一个DataReader并使用以下代码完全迭代它:
While Reader.Read
Dim x as string = Reader.GetString("x")
End While
我希望能够确定在没有调用.Read()的While循环之后是否已经迭代了它。原因是因为.Read()在调用时自动前进到下一行。如果存在读者尚未完全迭代的情况,我不希望它前进到下一行。似乎有一些方法可以判断读者是否已被完全阅读。
答案 0 :(得分:0)
我认为您正在寻找:HasRows,它可以让您确定DataReader是否有任何读取结果。
if(Reader.HasRows) {}
答案 1 :(得分:0)
错了。
If there is a circumstance where the reader hasn't completely been iterated through
它迭代到读者。
如果您使用,
If reader.read
//
End if
只读一次
答案 2 :(得分:0)
您可以将Datareader
中的数据加载到DataTable
,如下所示,
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
并计算任何约束。]
答案 3 :(得分:0)
Per Steve在问题的评论中,看起来这是重复的:
How to detect EOF on DataReader in C# without executing Read()
由于史蒂夫不想在答案中发表评论,我正在用这个链接回答我自己的问题。我会删除这个问题,但是因为它有答案所以我不会让我。我不希望这会影响我的问题/答案比率,所以我们在这里。