【问题标题】:How To: Use a datareader without a count of records如何:使用不计算记录的数据阅读器
【发布时间】:2009-11-15 14:00:03
【问题描述】:

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

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

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

一个简单的算法如下:


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

请不要使用 COUNT(*) 或数据表/数据集,只要对算法进行简单的更改就足够了。

【问题讨论】:

  • 这是一个问题还是只是让您烦恼的事情?
  • 完全正确。这不是一个问题。我不是在问。我说。对于问题板来说有点奇怪。但希望有人能找到这个并度过一个愉快的时刻。到目前为止的三个 cmets 让我想知道....

标签: .net datareader


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以试试这样的

    Dim IsFirst As Boolean = True
    
    While rdr.Read()
      If Not IsFirst
        DisplaySeparator()
      Else
        IsFirst = False
      End If
    
      DisplaySearchRecord(rdr)
    End While
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        • 2014-11-09
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多