0

假设我返回一个 DataReader 并使用以下代码完全迭代它:

While Reader.Read
    Dim x as string = Reader.GetString("x")
End While

我希望能够在不调用.Read()的情况下确定它是否在 While 循环之后被迭代。原因是因为 .Read() 在调用时会自动前进到下一行。如果存在读者没有完全迭代的情况,我不希望它前进到下一行。似乎有某种方法可以判断读者是否已完全阅读。

4

4 回答 4

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

[注意:一旦您将数据从 加载datareaderdatatabledatareader将自动关闭。但与此同时,您可以通过datatable计算任何约束来迭代多次。]

于 2013-03-13T12:05:18.397 回答
0

根据问题评论中的史蒂夫,看起来这是重复的:

如何在 C# 中检测 DataReader 上的 EOF 而不执行 Read()

由于史蒂夫不想对答案发表评论,因此我正在使用此链接回答我自己的问题。我会删除这个问题,但 se 不会让我,因为它有答案。我不希望这影响我的问答比例,所以我们来了。

于 2013-03-16T04:27:51.527 回答
0

I think you are looking for: HasRows, which enables you to determine if the DataReader has any results reading from it.

if(Reader.HasRows) {}
于 2013-03-13T11:17:49.457 回答
0

Its wrong.

If there is a circumstance where the reader hasn't completely been iterated through

It iterates till the reader.

If you use,

If reader.read
//
End if

It reads only one time

于 2013-03-13T11:18:51.320 回答