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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在vb.net中使用.eof OR .bof条件?相关的知识,希望对你有一定的参考价值。

我正在将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
答案

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

创建自己的记录集类。它可能需要不到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
另一答案

好吧,首先,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

以上是关于如何在vb.net中使用.eof OR .bof条件?的主要内容,如果未能解决你的问题,请参考以下文章

学生信息管理系统EOF 和 BOF

为啥极少数情况下 bof/eof 之一对于新的非空记录集是正确的

运行时错误 3021 - EOF 或 BOF 为真或当前记录已被删除

关于VB.NET中进度条使用问题

关于VB.NET进度条的实例

如何确定 VB.NET ListView 是不是正在向用户显示垂直滚动条