Vb.net 为什么要跳过我的ELSE语句?

Vb.net 为什么要跳过我的ELSE语句?,vb.net,Vb.net,我一直试图使用IF/ELSE语句来查询我的MySQL数据库,但似乎不明白为什么VB会忽略ELSE语句。以下是代码-如有任何帮助,将不胜感激: dbConn = New MySqlConnection("Server=" & FormLogin.ComboBoxServerIP.SelectedItem & ";Port=3306;Uid=qwertyuiop;Password=lkjhgfdsa;Database=zxcvbnm") Dim account As Bool

我一直试图使用IF/ELSE语句来查询我的MySQL数据库,但似乎不明白为什么VB会忽略ELSE语句。以下是代码-如有任何帮助,将不胜感激:

dbConn = New MySqlConnection("Server=" & FormLogin.ComboBoxServerIP.SelectedItem & ";Port=3306;Uid=qwertyuiop;Password=lkjhgfdsa;Database=zxcvbnm")
    Dim account As Boolean = True
    If dbConn.State = ConnectionState.Open Then
        dbConn.Close()
    End If
    dbConn.Open()
    Dim dbQuery As String = "SELECT * FROM customer WHERE accountNumber = '" & TextBoxSearch.Text & "';"
    Dim dbData As MySqlDataReader
    Dim dbAdapter As New MySqlDataAdapter
    Dim dbCmd As New MySqlCommand
    dbCmd.CommandText = dbQuery
    dbCmd.Connection = dbConn
    dbAdapter.SelectCommand = dbCmd
    dbData = dbCmd.ExecuteReader
    While dbData.Read()
        If dbData.HasRows() = True Then
            MessageBox.Show("Customer Account Found!")
        Else
            MessageBox.Show("No Customer Records Found!  Please try again!")
            dbData.Close()
        End If
    End While

我的目的是用代码替换“IF”子句中的messagebox,该代码将使用数据库中的数据填充我的表单。

我不会说它跳过了else子句,但它可能会以您期望的不同方式评估IF条件


就我个人而言,我不喜欢将任何事情与真实相比较。如果您删除
=true
,它是否工作?

这是因为您已经在阅读它:

While dbData.Read()
  If dbData.HasRows() = True Then
    MessageBox.Show("Customer Account Found!")
  Else
    MessageBox.Show("No Customer Records Found!  Please try again!")
    dbData.Close()
  End If
End While
如果读卡器没有记录,则将跳过整个While循环

换一种方式试试:

If dbData.HasRows Then
  While dbData.Read()
    'looping through records here
  End While
Else
  MessageBox.Show("No Customer Records Found!  Please try again!")
End If

还有必须注意的一点:不要让你的关系保持开放和活跃。使用
Using End Using
支架自动关闭一次性物品。

感谢您的帮助。这个建议很有魅力——多亏了你,我学到了一些新东西。但是在我的情况下,我如何使用USING-END-USING括号来自动打开和关闭连接呢?@KismetAgbasi-See。此外,还要学习使用参数。您的sql查询适合sql注入,参数将有助于防止这种情况。没有机会尝试您的建议删除“=true”。我尝试了LarsTech的另一个建议,效果很好——但无论如何还是要感谢Beth,我真的很感激。