2010-09-14 78 views
0

我正在更新一些VB6代码到.NET并遇到了一个小问题。我基本上是在一个无限循环,因为我不知道NET的等效RecordSet.MoveNext()(VB6)。我更新了使用Recordset与数据集ASP/VB6到.NET转换帮助

While Not _sqlADP.Fill(_dataSet) = 0 
    // code 
    // more code 

    // original VB6 code had _recordSET.MoveNext() here. 
End While 

如何检查EOF在这里并退出循环?

回答

4

我相信你会使用类似以下内容:

_sqlADP.Fill(_dataSet) 
For Each row As DataRow In _dataSet.Tables(0).Rows 

Next 

您可能还需要考虑使用DataReader,它可能更类似于VB6 RecordSet,因为我相信ADO RecordSet具有只读,仅默认向前行为。如果你正在使用DataReader,你的循环看起来像:

While _dataReader.Read() 

End While 
+0

Scott对于.NET来说非常方便。 – Maximillian 2010-09-14 20:09:11

2

这是C#,但你可以得到的想法......

foreach(DataRow row in _sqlADP.Fill(_dataSet).Tables[0].Rows) 
{ 
    // code here 
} 
0

我想出了一些我自己。这是一个非常简单的解决方案,我很好。

Dim rowCount = _sqlADP.Fill(_dataSet) 
While Not rowCount = 0 
    // code 
    // more code 

    // original VB6 code had _recordSET.MoveNext() here. 

    rowCount = rowCount - 1 
End While 

编辑:没关系,我去与斯科特·米切尔的解决方案。

+0

[Yuck](http://www2.tech.purdue.edu/cpt/courses/cpt355/C_Sharp_Coding_Standards_and_Guidelines.asp) – 2010-09-14 20:16:58