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

时间:2019-02-14 09:59:54

标签: vb.net vb6 vb6-migration

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

2 个答案:

答案 0 :(得分:0)

如您其他帖子所述,您可以(并且应该)做以下两件事之一:

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

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

您是否正在使用数据集? 您是否正在使用数据表? 您正在使用iList吗?

.net有一个GAZZILLION选项,范围从“ iList”,还有更多我未在此处列出的选项。因此,对于您当前使用的内容我们几乎一无所知。

我将进行一次大FAT WILD猜测并假定为数据表。

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

ListItem

所以,代替

var DateOrder = names.OrderByDescending(x => x.Date)
                     .Select(x => new { Text = $"{x.Name} {x.Age} {x.DOB} {x.Male}", Value = x.Name })
                     .ToList();

lstByDate.DataSource = DateOrder;
lstByDate.DataValueField = "Value";
lstByDate.DataTextField = "Text";

您将拥有:

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

答案 1 :(得分:0)

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

其次,如果您使用数据读取器,那么bof(在第一个记录之前)会有些相关,但是如果您使用数据适配器来填充表格,则不会。它要么有记录,要么没有。如果您想/需要继续使用诸如记录集之类的东西,那将是一个datreader ...虽然没有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