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

问题描述 投票:0回答:2

我正在将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
vb.net vb6 vb6-migration
2个回答
0
投票

如您的其他帖子所述,您可以(并且应该)执行以下两项操作之一:

创建自己的记录集类。它可能需要不到30分钟。然后,您可以使用现有代码进行非常小的更改。

而且你真的(但实际上)真的需要与大家分享你将要使用或正在计划使用或正在vb.net中使用的数据对象。 (或ASK你应该使用什么样的数据对象)。

你在使用数据集吗?你在使用数据表吗?你在使用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

0
投票

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

其次,如果你使用datareader,那么bof(在第一个记录之前)有些相关,但是如果你使用dataadapter来填充表格则不然。它要么有记录要么没有。如果你想/需要继续使用像记录集这样的东西,那么这将是一个数据读取器...没有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
© www.soinside.com 2019 - 2024. All rights reserved.