为什么我的ELSE语句被跳过了?

时间:2012-08-30 19:49:05

标签: 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 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”子句中的消息框替换为将使用数据库中的数据填充表单的代码。

2 个答案:

答案 0 :(得分:3)

那是因为你已经在阅读它了:

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括号自动关闭一次性物品。

答案 1 :(得分:0)

我不会说它正在跳过你的其他条款,但它可能会以不同的方式评估你的if条件。

就个人而言,我不喜欢将任何内容与True进行比较。如果您放弃= true,它是否有效?