如何:使用没有记录计数的datareader

时间:2009-04-23 14:06:03

标签: .net datareader

似乎人们已经失去了使用现代语言生成旧式COBOL / RPG报告的能力。

我经常看到使用依赖于记录数量的DataReader的代码。因此,当不需要时,会出现额外的聚合查询。

在大多数情况下,此代码需要知道是否有其他记录可用。换句话说,告诉我,如果我在最后一条记录,那么我可以显示一个记录分隔符。

一个简单的算法如下:


Dim available As Boolean = rdr.Read()
While available
  DisplaySearchRecord(rdr)
  available = rdr.Read()
  If available Then DisplaySeparator()
End While

请注意,当算法的简单更改就足够时,请不要使用COUNT(*)或数据表/数据集。

3 个答案:

答案 0 :(得分:0)

为什么不在while之后显示分隔符?

   While rdr.Read()
       DisplaySearchRecord(rdr)
   End While
   DisplaySeparator()

答案 1 :(得分:0)

您可以尝试这样的事情

Dim IsFirst As Boolean = True

While rdr.Read()
  If Not IsFirst
    DisplaySeparator()
  Else
    IsFirst = False
  End If

  DisplaySearchRecord(rdr)
End While

答案 2 :(得分:0)

你必须继续调用reader.Read(),当没有更多记录时它将返回false。

所以我要做的是将数据从数据库中转储到List<YourRecord>中,然后填充列表...用for(i ++)循环遍历它并检查i对列表。计数