如何在 vb.net 中使用 If .eof OR .bof 条件?

How to use If .eof OR .bof condition in vb.net?

我正在将 vb6 应用程序转换为 vb.net,其中 .eof 和 .bof 用作条件。我不明白如何在 vb.net

中执行这些条件
sSql = "Select * From SPCsetup"
    Set dbConn = New ADODB.Connection
    Call openDBconn(dbConn)
    Set rsConn = dbConn.Execute(sSql)
If rsConn.EOF Or rsConn.BOF Then
            bFlag = False
        Else
            bFlag = True
        End If

正如您在其他帖子中提到的,您可以(并且应该)执行以下两项操作之一:

创建您自己的记录集class。可能需要不到 30 分钟的时间。然后您可以使用您现有的代码,只需很少的改动。

而且您还确实(但确实确实)需要与这里的每个人分享您将要使用、计划使用或目前正在 vb.net 中使用的数据对象的类型。 (或询问您应该使用哪种数据对象)。

您在使用数据集吗? 你在使用数据表吗? 您在使用 iList 吗?

.net 有 GAZZILLION 个选择,从“iList”到其他我没有在这里列出的。所以我们对您目前使用的东西知之甚少。

我要大胆猜测并假设数据表。

假设我们使用数据表,那么您的代码将类似于:

Dim tblHotels As New DataTable
Dim strSQL As string = "select * from tblHotels"
Dim DataReader As New SqlDataAdapter(strSQL, My.Settings.SQLCon1string)
DataReader.Fill(tblHotels)

If tblHotels.Rows.Count = 0 Then
   bFlag = False
Else
   bFlag = True
End if

所以,代替

If tblHotels.EOF  then

您将拥有:

 If tblHotels.Rows.Count = 0 Then

嗯,首先,ADODB 是一个 COM 组件,因此理论上您可以继续使用它。但这并不是真的推荐,因为虽然它确实有一些啤酒和口哨,但它们并非没有问题。 Ado.Net 存在是有原因的,不仅仅是因为他们喜欢编写新代码来做同样的事情。

其次,如果您使用数据读取器,那么 bof(在第一条记录之前)有点相关,但如果您使用数据适配器来填充 table,则不是。它要么有记录,要么没有。如果你 want/need 继续使用像记录集这样的东西,那将是一个数据阅读器......没有 BOF,但你并不真正需要它。你发现什么都没有返回,因为什么都没有返回。

sSql = "Select * From SPCsetup"
Using dbConn = New SqlConnection(connctionString)
    dbConn.Open() 
    Using dbCmd = dbConn.CreateCommand()
      dbCmd.CommandText = sSql
      Using dbReader = dbCmd.ExecuteReader
         bFlag = false
         While dbReader.Read
          bFlag = true
          'Do something 
         End While
      End Using
    End Using
End Using