【问题标题】:How to use If .eof OR .bof condition in vb.net?如何在 vb.net 中使用 If .eof OR .bof 条件?
【发布时间】:2019-02-14 09:59:54
【问题描述】:

我正在将 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 中实现它的最佳方式。看起来您正在遍历 Recordset。如果您正在迁移数据访问代码,您是在尝试尽可能接近地使用 VB6 代码,还是在编写新的 ADO.NET 代码?无论您在做什么,始终对问题提供完整且清晰的解释。
  • @jmcilhinney 我正在编写一个新代码,我已经更新了问题,请查看
  • 我仍然不知道rsConn 是什么,我只是猜测它是一个记录集。我认为你需要重新审视你对“FULL and CLEAR”意味着什么的理解。如果您正在编写新代码,那么您所拥有的就无关紧要了,因为您将在 VB.NET 甚至实体框架中使用 ADO.NET。您应该了解数据访问在 VB.NET 中的工作原理,然后编写最好的代码来实现您的要求。如果您在这样做时遇到了实际问题,那么是时候发布有关该问题的问题了。
  • @jmcilhinney 我是 vb.net 的新手,所以我不太了解它,是的 rsConn 是一个记录集,它存储来自查询的值。我没有得到的是这会产生什么结果 if(rsconn.eof and rsconn.bof ) 有没有办法在 vb.net 中做到这一点以及我如何执行它
  • If rsConn.EOF Or rsConn.BOF => 这意味着:如果没有返回记录,则bFlag = False 否则bFlag = True。您可以使用SELECT COUNT 查询,评估ExecuteScalar 命令的结果。请参阅文档OleDbCommandOleDbConnection

标签: vb.net vb6 vb6-migration


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    正如您在其他帖子中所指出的,您可以(并且应该)做以下两件事之一:

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

    您还真的(但真的)需要在这里与大家分享您将使用、计划使用或当前在 vb.net 中使用的数据对象类型。 (或询问您应该使用哪种数据对象)。

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

    .net 有 GAZZILLION 选项,从“iList”,还有更多我没有在这里列出的选项。所以我们对你目前使用的东西几乎没有任何线索。

    我将进行 BIG FAT WILD 猜测并假设数据表。

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

    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
    

    【讨论】:

    • 哦,但是 .bof 呢?
    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    相关资源
    最近更新 更多